python3:Numpy 中array的合并和分割

1、合并

np.vstack() 上下合并

import numpy as np
A = np.array([1,1,1])
B = np.array([2,2,2])
         
print(np.vstack((A,B)))    # vertical stack 
"""
[[1,1,1]
 [2,2,2]]
"""

C = np.vstack((A,B))      
print(A.shape,C.shape)

# (3,) (2,3)

np.hstack() 左右合并

D = np.hstack((A,B))       # horizontal stack

print(D)
# [1,1,1,2,2,2]

print(A.shape,D.shape)
# (3,) (6,)

np.newaxis() 转置的另外一种方式

前面使用过用A.T来表示A的转置,下面介绍一种新的转置方法。

print(A[np.newaxis,:])          #以行为标准
# [[1 1 1]]

print(A[np.newaxis,:].shape)
# (1,3)

print(A[:,np.newaxis])          #以列为标准  
"""
[[1]
[1]
[1]]
"""

print(A[:,np.newaxis].shape)
# (3,1)

np.concatenate()

 当你的合并操作需要针对多个矩阵或序列时,借助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),axis=0)    # axis=0表示纵向合并
print(C)
"""
[[1]
 [1]
 [1]
 [2]
 [2]
 [2]
 [2]
 [2]
 [2]
 [1]
 [1]
 [1]]
"""

D = np.concatenate((A,B,B,A),axis=1)    #表示横向合并
print(D)
"""
[[1 2 2 1]
 [1 2 2 1]
 [1 2 2 1]]
"""

concatenate函数通过参数axis的值来很好的控制纵横的合并。对于多矩阵的操作十分的方便。

2、分割

纵向分割

import numpy as np
A = np.arange(12).reshape((3, 4))
"""
array([[ 0,  1,  2,  3],
    [ 4,  5,  6,  7],
    [ 8,  9, 10, 11]])
"""

print(np.split(A, 2, axis=1))
"""
[array([[0, 1],
        [4, 5],
        [8, 9]]), array([[ 2,  3],
        [ 6,  7],
        [10, 11]])]
"""

横向分割

print(np.split(A, 3, axis=0))
# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]

在Numpy里还有np.vsplit()np.hsplit()方式可用。vertical可理解为垂直方向的操作,horizontal可理解为水平方向的操作。注意:也必须为等量分割。

print(np.vsplit(A, 3)) #等于 print(np.split(A, 3, axis=0))

# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]


print(np.hsplit(A, 2)) #等于 print(np.split(A, 2, axis=1))
"""
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
        [ 6,  7],
        [10, 11]])]
"""

不等量分割

上述均为等量分割,若为不等量时,如下:

print(np.array_split(A, 3, axis=1))
"""
[array([[0, 1],
        [4, 5],
        [8, 9]]), array([[ 2],
        [ 6],
        [10]]), array([[ 3],
        [ 7],
        [11]])]
"""

学到这里,我们对Numpy已有了大致的了解,对矩阵的简单操作了如执掌。

猜你喜欢

转载自blog.csdn.net/sunshine_lyn/article/details/81478434