一、索引
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]