一、索引
1.1numpy数组的转置
A=np.arange(3,15).reshape(3,4) print(A) print(A[2][0]) print(A[2,1]) print(A[2,:])#用冒号代替这一行所有的数 第二行的所有的数 print(A[:,1])#第一列的所有数 # 第一行的从1到3的值 print(A[1,1:3])
结果:
1.2矩阵的转置以及将矩阵转化为array
A=np.arange(3,15).reshape(3,4) print(A) for col in A.T: #迭代a的列就是 迭代A的转置的行 print(col) a=A print(a.flatten())#返回被改变的array for item in a.flat:#a.flat 表示的是一个迭代期 print(item)
结果:
二、矩阵的合并
2.1基本上用 concatenate函数对矩阵进行合并
# array的合并 a=np.array([1,1,1]) b=np.array([2,2,2]) c=np.vstack((a,b))#纵向叠加成矩阵 print("纵向叠加:") print(c) print("为了之后的合并,我们对array进行reshape") a=a.reshape(3,1) print("reshape a:") print(a) b=b.reshape(3,1) print("reshape b:") print(b) print("左右合并:") d=np.hstack((a,b))#左右合并成一个矩阵 如果是序列的话 就是序列+序列=序列 print(d) # # # 想把a变成一个竖向的序列 # print(a.reshape(3,1)) # 多个arrayd 纵向或者横向的合并 print("多个矩阵或者array的合并") c=np.concatenate((a,b,b,a),axis=0)#0是在上下的维度进行合并 按列合并 print("在上下维度合并") print(c) c=np.concatenate((a,b,b,a),axis=1)#0是在左右的维度进行合并 按行合并 print("在左右维度合并") print(c)
结果:
纵向叠加: [[1 1 1] [2 2 2]] 为了之后的合并,我们对array进行reshape reshape a: [[1] [1] [1]] reshape b: [[2] [2] [2]] 左右合并: [[1 2] [1 2] [1 2]] 多个矩阵或者array的合并 在上下维度合并 [[1] [1] [1] [2] [2] [2] [2] [2] [2] [1] [1] [1]] 在左右维度合并 [[1 2 2 1] [1 2 2 1] [1 2 2 1]] Process finished with exit code 0
三、矩阵的分割
3.1等量的分割
a=np.array([1,1,1]) b=np.array([2,2,2]) # array的分割 a=np.arange(12).reshape(3,4) print(a) print(np.split(a,2,axis=1))#要切割的矩阵 分割为几块 分割为行还是列 1表示分割为行(这里把行分为2列) print(np.split(a,3,axis=0))#按列分为三块 把每一列分为三块 这边最好还是注意下axis 的值和对应的意思
结果:
[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [array([[0, 1], [4, 5], [8, 9]]), array([[ 2, 3], [ 6, 7], [10, 11]])] [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])] Process finished with exit code 0
3.2不等量的分割
a=np.arange(12).reshape(3,4) print(a) # 如何进行不等量的分割 a=np.array_split(a,3,axis=1) #这里是把每行元素分成了三份 print(a)
结果:
[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [array([[0, 1], [4, 5], [8, 9]]), array([[ 2], [ 6], [10]]), array([[ 3], [ 7], [11]])] Process finished with exit code 0
3.3分割的其它办法
# array的分割 a=np.arange(12).reshape(3,4) print(a) # 分割的其它办法 print(np.vsplit(a,3))#v代表垂直分割 print(np.hsplit(a,2))#h代表水平分割
结果:
[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])] [array([[0, 1], [4, 5], [8, 9]]), array([[ 2, 3], [ 6, 7], [10, 11]])]
四、array的相关赋值
其实就是就是如果想不相关,但是值是一样,那就用.copy(),这就叫深度复制
# array的相关赋值 a=np.arange(4) print(a) b=a#b就是指向ad 引用 c=a d=b a[0]=11 print(a) print(b) print(b is a)#可以看下是不是同一个a print(a is d)#发现是同一个维度的 d[1:3]=[22,33] print(a)#你改了不管其中那一个 都会变的 # 如果我们不想关联起来 b=a.copy()#deep copy 赋值但没有关联 a[3]=44 print(a) print(b)
结果:
[0 1 2 3] [11 1 2 3] [11 1 2 3] True True [11 22 33 3] [11 22 33 44] [11 22 33 3]