numpy.ndarray数组:
Rank表示数组的维数
Import numpy as np
一、创建
创建数组:a=np.array([1,2,3,4,5,6])
reshape指定行列向量:a.reshape((2,-1)) #-1代表3,a变成了2行3列的数组
zeros创建元素为0的矩阵:a=np.zeros((3,3)) #创建了一个3行3列全为0的二维数组
ones创建元素为1的矩阵:a=np.ones((3,3)) #创建了一个3行3列全为1的二维数组
full创建元素为0或1的数组:a=np.full((3,3),0)或a=np.full((3,3),1)
eye创建单位向量:a=np.eye(3) #创建了一个对角线均为1,其余都为0的3行3列矩阵
random.random创建0~1之间的随机元素:a=np.random.random((3,4)) #创建了一个3行4列每一个元素都是0~1之间的随机数
二、索引
indexing
a=np.array([[1,2,3,4],
[5.6.7.8],
[9,10,11,12]])
①a[-2:,1:3]
#-2代表倒数第二行,:表示到最后,即([[5,6,7,8],
[9,10,11,12]])
#1:3表示从编号为1的列到编号为2的列,最后取出:([[6,7],
[10,11]])
②有整数操作会使维度-1
③为每一行的第二个元素+10,有以下三种方式:
a[np.arange(3),1]+=10
a[np.arange(3),[1,1,1]]+=10
a[[0,1,2],[1,1,1]]+=10
④获取数组中元素大于10的元素
result_index=a>10 #返回一个布尔型数组,是否大于10
用a[result_indes]就可以输出一维数组,元素为a中大于10的元素
三、特殊操作
①axis=0 对行操作
②axis=1 对列操作
③np.random.uniform(m,n)产生一个m到n之间的随机数
④tile将数组作为一个元素重复指定的次数
a=np.array([[1,2],
[3,4]])
np.tile(a,[1,2]) #把a作为一个整体,输出1行2列的a,输出:([[1,2,1,2],
[3,4,3,4]])
np,tile(a,[2,1]) #把a作为一个整体,输出2行1列的a,输出:([[1,2],
[3,4],
[1,2],
[3,4]])
⑤argsort排序函数
a=np.array([[3,6,4,11],
[5,10,1,3]])
a.argsort(),输出:array([[0,2,1,3], #输出的是按每行从小到大排序的索引
[2,3,0,1]],dtype=int64)
a.argsort(axis=0),输出:array([[0,0,1,1], #输出的是按每列从小到大排序的索引
[1,1,0,0]],dtype=int64)
⑥矩阵转置:行变列,列变行
a.T
np.transpose(a)
四、广播特性:在矩阵相加时,numpy会自动进行行列扩维,使二者维度相同
a=np.array([[1,2,3], b=np.array([1,2,3])
[2,3,4],
[12,31,22],
[2,2,2]])
操作a+b:
①for i in range(4):
a[i,:]+=b
②a+np.tile(b,[4,1])
③numpy的广播特性:直接a+b