Numpy常用操作

2023-10-18 08:46:28 浏览数 (1)

以下是关于numpy数组生成、计算、索引、统计、保存的常用api备忘。

数组生成:

  • np.arange(0,10) 生成[0,10)的顺序矩阵
  • np.zeros((3,2)) 生成尺寸为(3,2)的全0矩阵
  • np.random.rand(4,3) # 0~1的随机小数矩阵,4行3列
  • np.random.randint(0, 10, size=5) # 随机数(5个):第1个起始;第2个结束(不包括);第3个随机数个数
  • np.random.randint(0, 10, size=(2, 5)) # 随机数组/矩阵(5个):第1个起始;第2个结束(不包括);第3个随机数个数(行,列)
  • np.random.seed(100) # 随机数种子,种子不变,每次生成的随机数也不变
  • 或者使用rs = np.random.RandomState(100)设置随机数种子,然后通过rs.rand(4)等方法来使用,生成四个随机数
  • np.random.random(5) # 随机数(float型),5个
  • np.random.random((3, 5)) # 随机数组/矩阵(float型),(3行,5列)
  • np.random.normal(size=5) # 正态分布的5个随机数
  • np.random.normal(size=(3, 5)) # 正态分布的5个随机数组

数组变换

  • np.pad(a,((3,2),(2,3)),'constant',constant_values = (0,0)) 在a第0个维度,前面填3个0,后面填2个0;在a第1个维度,前面填2个0,后面填3个0
代码语言:javascript复制
array([[95, 96],   
       [97, 98]])                           

array([[ 0,  0,  0,  0,  0,  0,  0],
       [ 0,  0,  0,  0,  0,  0,  0],
       [ 0,  0,  0,  0,  0,  0,  0],
       [ 0,  0, 95, 96,  0,  0,  0],
       [ 0,  0, 97, 98,  0,  0,  0],
       [ 0,  0,  0,  0,  0,  0,  0],
       [ 0,  0,  0,  0,  0,  0,  0]])

数组选择

  • np.argwhere(condition) 返回满足条件的索引

数组计算:

  • np.concatenate(x1,x2,axis=0)数组拼接
  • 按元素相乘:a*bnp.multiply(a,b)
  • 矩阵乘法:a@b 或者np.dot(a,b)
  • 矩阵的张量积:np.kron(a,b)
  • data.T 数组转置
  • data.I 矩阵求逆
  • 矩阵插入一行或一列
  • np.tile(data, repeat) 矩阵复制, data为要实施复制的矩阵,repeat为各个维度分别重复的次数,例如:
代码语言:javascript复制
t = np.array([1,2,3])
np.tile(t, [3,1])
Out:
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])

数组统计:

  • a.argmax(axis=0) 求每一行或每一列的最大值的索引
  • np.argsort(R, axis=1) 将array数组进行排序并获取排序后的索引(从小到大)
  • a[:,-3:] 获取数组每行的倒数前三位
  • np.sum( ndarray == 1 ) 查询array中1的个数
  • np.mean(t,axis=0) 对列求平均
代码语言:javascript复制
>>> a = np.array([[1, 2], [3, 4]])
>>> a
array([[1, 2],
[3, 4]])
>>> np.mean(a)
2.5
>>> np.mean(a, axis=0) # axis=0,计算每一列的均值
array([ 2.,  3.])
>>> np.mean(a, axis=1) # 计算每一行的均值
array([ 1.5,  3.5])

数组保存:

  1. numpy.save("filename.npy",a) 利用这种方法,保存文件的后缀名字一定会被置为.npy,这种格式最好只用 numpy.load("filename")来读取。
  2. numpy.savetxt("filename.txt",a) b = numpy.loadtxt("filename.txt") 用于处理一维和二维数组
  • 保存目录不存在的话创建目录:
代码语言:javascript复制
import os
if not os.path.isdir(dir_name):
os.makedirs(dir_name)

0 人点赞