numpy的数组合并分割

一.数组横向纵向合并

import numpy as np
a=np.array([1,1,1])
b=np.array([2,2,2])
c=np.vstack((a,b)) #vertical  stack垂直合并
d=np.hstack((a,b))#horizontal stack水平合并
print(a.shape )   # (3,)
print(c.shape)    # (2,3)
print(d.shape)    # (6,)
print(a[np.newaxis,:]) #行[[1 1 1]]
print(a[np.newaxis,:].shape)  #  (1,3) 
print(a[:,np.newaxis])#列
print(a[:,np.newaxis].shape)  # (3,1)

输出结果
(3,)
(2, 3)
(6,)
[[1 1 1]]
(1, 3)
[[1]
[1]
[1]]
(3, 1)
二.numpy.newaxis

import numpy as np
a=np.array([1,1,1])[:,np.newaxis]#变成列向量
b=np.array([2,2,2])[:,np.newaxis]#变成列向量
c=np.vstack((a,b)) #vertical  stack
d=np.hstack((a,b))#horizontal stack
print(a.shape ,b.shape)   # ((3,1),(3,1))
print(c.shape)    # (6,1)
print(d.shape)    # (3,2)

输出结果
((3, 1), (3, 1))
(6, 1)
(3, 2)

三.numpy.concatenate

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))
print(c)#按列合并
d=np.concatenate((a,b,b,a),axis=0)#设置在列上合并
print(d)
e=np.concatenate((a,b,b,a),axis=1)#设置在行上合并,3行4列
print(e)

输出结果:
[[1]
[1]
[1]
[2]
[2]
[2]
[2]
[2]
[2]
[1]
[1]
[1]]
()
[[1 2 2 1]
[1 2 2 1]
[1 2 2 1]]
四.横向,纵向分割split
split()实现等分
array_split()实现不等分

import numpy as np

a=np.arange(12).reshape((3,4))
print(a)
print(np.split(a,2,axis=1)) #   vertical纵向分2部分
print(np.split(a,3,axis=0)) #   horizontal横向分3部分
print(np.array_split(a,3,axis=1))#纵向分3部分

print(np.vsplit(a,3)) #横着分3组
print(np.hsplit(a,2)) #竖着分两组

输出结果:
[[ 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],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[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]])]

猜你喜欢

转载自blog.csdn.net/weixin_40490880/article/details/81189333