numpy学习

 (个人学习使用)

numpy

ndarray

属性

data.shape   # 几行几列
data.ndim    # 是几维数组
data.size    # 一共有几个元素
data.dtype    # 存的是什么类型的数据,一般ndarray存的是同一类型的数据
data.itemsize    # 每个元素站几个字节

生成数组的方法

np.zeros((3,4), dtype='float64')    # 生成全是0的数组,指定类型
np.ones((3,4))
np.linspace(0,100,10)    # [0,100]的10个数
np.arange(0,100,10)    # [0,100)步长为10
np.random.rand(n)*10    # 生成[0.0, 1.0]之间的n个数

改变形状

data.reshape((4,3))    # 变成4,3的形状,有返回值,不在原数组上改
data.resize((4,3))    # 变成4,3的形状,没有返回值,在原数组上改
data.T    # 类似于矩阵的转置,行变列,列变行

类型修改

data.astype("float64")    # 修改为float64类型
data.tostring() / data.tobytes()    # 将数组序列化

数组去重

np.unique(data)    # 直接使用函数去重,结果变成1维的
set(data.flatten())    # 先使用flatten函数对数组降维,在使用集合set特性去重

逻辑运算

data > 0.5    # 返回一组布尔值,符合条件的是True,不符合的是Flase
data[data > 0.5]    # 返回布尔值为True的值
data[data > 0.5] = 1    # 修改符合条件的值为1
# np.all(布尔值)
#全True返回True,否则返回False
# np.any()
#只要有一个True则返回True,否则返回False

np.all(data[0:2,0:5]>0)
np.any(data[0:2,0:5]>0)
# np.where(数据,True位置的值,Flase位置的值)

np.where(data[:2. :2]>0, 1, 0)
# 复合逻辑运算符,logical_and,logical_or
np.logical_and(data>0.2, data<1)
np.logical_or(data<0, data>1)
min,max,mean,median,argmax,argmin,var,std
# 两种方法都行
d.max()
np.max(d)

d.max(axis=0)   # 求每一列最大值
d.max(axis=1)    # 求每一行最大值
# 返回最值所在的位置
d.argmax(axis=1)

数组间运算

# 直接对数组进行加减乘除运算
d + 10
d - 10

# 数组与数组的运算需要满足之一
# 维度相等
# shape其中一个地方为 1
d1 = np.array([[1,2,3],[4,5,6]])    # (2,3)
d2 = np.array([[2],[3]])    # (2,1)
d1 * d2

矩阵

# mat()
m = np.mat([[1,2],[3,4],[5,6]])
m
# 也可以简单的使用ndarray存储矩阵

矩阵乘法
### 若是ndarray存矩阵
np.marmul(数组1, 数组2)
np.dot(数组1,数组2)
d1 @ d2  也可以,更简单

### 若是matrix存矩阵
d1 * d2 即可

合并与拼接

d3 = np.array([[1,2,3],[11,22,33],[7,8,9]])
d4 = np.array([[4,5,6]])

np.hstack((d3,d4))    # 将数组进行行拼接
array([[ 1,  2,  3],
       [11, 22, 33],
       [ 7,  8,  9],
       [ 4,  5,  6]])
np.vstack((d3,d4))    # 将数组进行列拼接
array([[ 1,  2,  3,  4],
       [11, 22, 33,  5],
       [ 7,  8,  9,  6]])

np.concatenate((d3,d4), axis=0/1)    # 可以行拼接或者列拼接,列拼接时要满足拼接条件才能拼接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值