1 array合并
(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:\PycharmProjects\pythonProject\venv\Scripts\python.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:\PycharmProjects\pythonProject\venv\Scripts\python.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 0
2 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:\PycharmProjects\pythonProject\venv\Scripts\python.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:\PycharmProjects\pythonProject\venv\Scripts\python.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