(1)左右合并以及上下合并
import numpy as np a=np.array([1,1,1]) b=np.array([2,2,2]) c=np.vstack((a,b)) #verticle stack 上下合并 可以a,a,b,b,a重复合并 print(c) print(a.shape,c.shape) #运行结果:(3,) (2, 3) d=np.hstack((a,b)) #horizontal stack 左右合并 print(d) print(a.T) #结果还是[1 1 1] 说明不能用transpose或者T方法将其转置 print(a[np.newaxis,:].shape)#在行上加了个维度 把[1 1 1]变为[[1 1 1]] 是个1*3的矩阵 print(a[:,np.newaxis]) #在列上增加维度 # 结果 # [[1] # [1] # [1]]
运行结果:
D:PycharmProjectspythonProjectvenvscriptspython.exe D:/PycharmProjects/pythonProject/hello.py [[1 1 1] [2 2 2]] (3,) (2, 3) [1 1 1 2 2 2] [1 1 1] (1, 3) [[1] [1] [1]] Process finished with exit code 0
也可以这样定义:
a=np.array([1,1,1])[np.newaxis,:] #在行上加个维度 print(a) #运行结果:[[1 1 1]]
(2) 另一个函数可以随意指定行Or列的合并
import numpy as np a=np.array([1,1,1])[:,np.newaxis] #在列上加个维度 b=np.array([2,2,2])[:,np.newaxis] #在列上加个维度 c=np.concatenate((a,b,b,a,a),axis=1) #行合并 print(c)
运行结果:
D:PycharmProjectspythonProjectvenvscriptspython.exe D:/PycharmProjects/pythonProject/hello.py [[1 2 2 1 1] [1 2 2 1 1] [1 2 2 1 1]] Process finished with exit code 02 array分割
import numpy as np a=np.arange(12).reshape((3,4)) print(a) #等量分割 print(np.split(a,2,axis=1))#将a分成2块 横向分割 分成左右两块 print(np.split(a,3,axis=0))#将a分成3块 上中下三行 print(np.vsplit(a,3))#纵向分割三块 print(np.hsplit(a,2))#横向分成两块 #不等量分割 print(np.array_split(a,3,axis=1)) #当4个不能等量分成3个部分时 考虑不等量分割 2+1+1
运行结果:
D:PycharmProjectspythonProjectvenvscriptspython.exe D:/PycharmProjects/pythonProject/hello.py
[[ 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]])]
[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([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[11]])]
Process finished with exit code 0
3 copy与deep copy
import numpy as np a=np.arange(4) print(a) b=a c=a d=b a[0]=0.3 print(a) #结果还是[0 1 2 3] 因为默认为整型 a[0]=11 print(a) print(b is a) #判断b是不是a true 改变a也会改变b当中的东西 print(b) print(c) print(d is a)#true d[2:4]=[22,33] print(d) print(a,b,c)#abcd的值全部一起改变了 #如果只是想用到值 不想将他们关联在一起的话 b=a.copy()#deep copy 只是把值copy过去 并没有关联
运行结果:
D:PycharmProjectspythonProjectvenvscriptspython.exe D:/PycharmProjects/pythonProject/hello.py [0 1 2 3] [0 1 2 3] [11 1 2 3] True [11 1 2 3] [11 1 2 3] True [11 1 22 33] [11 1 22 33] [11 1 22 33] [11 1 22 33] Process finished with exit code 0



