numpy库是python中用于科学计算的核心库,它提供了一个高性能的多维数组对象,以及用于处理这些数组的工具。
导入numpy模块
import numpy as np
创建数组
a=np.array([1,2,3]) #创建一维数组
b=np.array([(1.5,2,3),(4,5,6)],dtype=float) #创建二维数组
c=np.array([[(1.5,2,3),(4,5,6)],[(3,2,1),(4,5,6)]],dtype=float) #创建三维数组
初始方法
np.zeros((3,4)) #创建一个3x4的0数组
np.ones((2,3,4),dtype=np.int16) #创建两个3x4的1数组
d=np.arange(10,25,5) #创建一个值在10~25以内,间隔为5的一维数组
np.linspace(0,2,9) #创建一个值在0~2以内,长度为9的一维数组
e=np.full((2,2),7) #创建一个值都为7的2x2二维数组
f=np.eye(2) #创建一个2x2单位矩阵
np.random.random((2,2)) #创建具有随机值的数组
np.empty((3,2)) #创建空数组
I/O:磁盘上的保存和加载
np.save('my_array',a)
np.savez('my_array.npz',a,b)
np.load('my_array.npy')
I/O:保存和加载文本文件
np.loadtxt('myfile.txt')
np.genfromtxt('my_file.csv',delimiter=',')
np.savetxt('myarray.txt',a,delimiter=' ')
数据类型:
np.int64 #整型
np.float32 #浮点型
np.complex #复数
np.bool #布尔值
np.object #对象
np.string_ #ASCLL字符
np.unicode_ #Unicode所有字符,字节数由平台决定
查看数组:
a.shape #轴 查看数组形状,对于矩阵,n行m列
len(a) #数组长度
a.ndim #迭 数组维数
a.size #数组元素数,行*列
b.dtype #数组数据类型
b.dtype.name #数组数据类型名称
b.astype(int) #转换数组为不同数据类型
帮助代码
np.info(np.ndarray.dtype)
数组数学运算
np.subtract(a,b) #数组相减a-b
np.add(b,a) #数组相加b+a
np.divide(a,b) #数组相除a/b
np.multiply(a,b) #数组
np.exp(b) #计算数组各元素的指数值
np.sqrt(b) #计算数组各元素的平方根
np.sin(a) #计算数组各元素的三角函数值
np.cos(b)
np.log(a) #计算数组各元素的自然对数
e.dot(f) #数量积
比较
a==b #两个数组之间进行比较,相同位置元素值相同标明true,否则false
a<2 #a数组元素值小于2的元素标明为true,否则false
np.array_equal(a,b) #
聚合函数
a.sum() #求和数组a各元素的总和
a.min() #数组a最小值
b.max(axis=0) #数组b最大值,axis=0为列,1为行
b.cumsum(axis=1) #累加,cumsum和cumprod之类的方法不聚合,产生一个中间结果组成的数组,默认一维数组,1为按原样
b.cumprod() #累乘
a.mean() #平均数
a.median() #中位数
a.corrcoef() #
np.std(b) #标准差:方差平方根
复制函数
h=a.view() #用相同的数据创建数组的视图
np.copy(a) #创建数组的副本
h=a.copy() #创建数组的深度副本
数组排序
a.sort() #从小到大排序
a.sort(axis=0) #从小到大对列排序 axis=0为列,1为行
数组处理
i=np.transpose(b) #
i.T #矩阵转置, 行变列, 列变行, 对角线翻转矩阵
b.ravel() #使阵列变平,多维数组转为一维数组
b.reshape(3,-2) #重塑,但不要改变数据
h.resize((2,6)) #返回具有行列的新数组(2,6)
np.append(h,g) #将数据追加到数组中
np.insert(a,1,5) #将数组插入到数组中
np.delete(a,[1]) #从数组中删除数据
np.concatenate((a,b),axis=0) #级联数组
np.vstack((a,b)) #垂直堆栈数组(行)
np.r_[a,b] #垂直堆栈数组(行)
np.hstack((a,b)) #水平堆栈数组(列)
np.column_stack((a,b)) #创建堆叠列阵列
np.c_[a,b] #创建堆叠列阵列
np.hsplit(a,3) #在第三个索引中水平地拆分数组a
np.vsplit(a,2) #在第二个索引上垂直地拆分数组a