创建数组:
import numpy as np
a=np.array([1,23,34])
b=np.array([[1,2,3],[4,5,6]])
c=np.array(((1,2,3),(4,5,6)))
d=np.array([(1,2,3),[5,6,7],[1,3,5]])
e=np.array([['ding','mo'],['xiao','momo']])
创建复数数组:
a=np.array([[1,2,3],[45,67,89],dtype=complex])
创建0数组:
a=np.zeros((3,4))
创建1数组:
a=np.ones((3,3))
用arange()函数生成数组:
a=np.arange(0,10)
b=np.arange(2,10)
c=np.arange(0,12,3)#相邻个数为3
用reshape()函数生成二维数组:
a=np.arange(0,12).reshape(3,4)
用linespace()来生成一定范围内指定个数的数组:
a=np.linespace(0,10,5)
用random()生成随机数组:
a=np.ramdom.ramdom(4)
b=np.ramdom.ramdom((3,4))
数组算术运算,运算都是元素级的:
a=np.array([1,2,3])
b=np.arange(3)
a+5
a*3
a+b
np.sin(a)
a*np.sin(b)
np.sqrt(b)
np.log(b)
A=np.ones((3,4))
B=np.arange(12).reshape(3,4)
A*B#对应元素相乘
对于矩阵的积:
np.dot(A,B)
或者:
A.dot(B)
聚合函数:
a=np.arange(12)
a.sum()
a.min()
a.max()
a.mean()
a.std()
数组的索引、切片,类似列表:
a=np.arange(12)
a[4]#结果为3
a[-2]
a[:4]
a[1:4]
a[[1,3,7]]
a[1:5:2]#索引为[1:5)内每隔两个数取一个值
a[::2]#从索引为0开始到索引最大,每隔两个数取一个值
二维数组切片:
A=np.arange(12).reshape(3,4)
A[1,3]#获取第二行第四列的数据
A[:,0]#获取所有行的索引为0的值,
A[:2,:2]#获取行索引为0,1,以及列索引为0,1组成一新的二维数组
A[[0,3],[0,2]]#抽取的行列索引不连续
数组的迭代:
a=np.arange(12)
for i in a:
print(a)
b=np.arange(12).reshape(3,4)
for i in b:
print(i)#按行输出
for i in b.flat:
print(i)#输出单个值
apply.along_axis()
np.apply.along_axis(np.mean,axis=0,arr=a) #按列求平均值,值为一个列表
np.apply.along_axis(np.max,axis=1,arr=a) #按行求最大值
条件和布尔数组:
A=np.ramdom.ramdom((4,4))
B=A>2#B的值将是一个true和false的布尔数组
C[A>2]#C的值取A中值大于2组成一个一维数组
形状变换:
A=np.arange(12).reshape(3,4)
A.shape=(4,3) #将A变换成4行3列
ravel()将二维数组变换成一位数组:
a=A.ravel()
也可以用shape()直接变换
A.shape(12)
行列转置:
A.transpose()
连接数组:垂直入栈vstack();水平入栈hstack()
A=np.ones((3,4))
B=np.zeros((4,3)).reshape(3,4)
C=np.vstack(A,B) #数组垂直生长
D=np.hstack((A,B)) #数组水平生长
用于一维数组列或行入栈的函数,column_stack(),row_stack(),生成二维数组:
a=np.array(1,2,3)
b=np.array(3,4,5)
c=np.array(4,3,1)
A=np.column_stack(a,b,c)#生成一个3x3的数组,a作为第一列,b作为第二列,c作为第三列
B=np.row_stack(a,b,c)# 按一维数组的行入栈
数组的切分,水平切分hsplit(),意思是按照宽度切分;垂直切分vsplit(),意思是按照高度切分:
A=np.arange(16).reshape(4,4)
[B,C]=np.hsplit(A,2)
[D,E]=np.vsplit(A,2)
split()函数可以将数组分为几个不对成的部分,需要指定索引,axis=0按行切分;axis=1按列切分:
[A1,A2,A3]=np.split(A,[1,3],axis=1)#将数组分为三个部分,第一部分为第一列,第二部分为第二列和第三列,第三部分为第四列。
[A1,A2,A3]=np.split(A,[1,3],axis=0)#按行切分
数组的对象和视图:在numpy中,所有的赋值不会为数组或数组中的元素创建副本。
a=np.array([1,2,3])
b=a
b不过是调用a的另一种方式,a[0]=5,b[0]元素的值也会改变;
save()以.npy扩展名保存为二进制数据,load()方法读取保存的数据。
np.save('xiaomomo',a)
load('xiaomomo.npy')
numpy的genfromtext()方法从文本文件中读取数据并将其插入到数组中,接收三个参数:文件名,文件中分割的字符,是否含有标题。
data=np.genfromtext('data.cav',delimiter=',',names=True)