代码整理
import numpy as np ################################### 合并 ################################### # hstack vstack 要求矩阵a,b 必须行列数一样, 行=行 列=列 a = np.floor(10 * np.random.rand(2, 2)) b = np.floor(10 * np.random.rand(2, 2)) ################# hstack ################# #### hstack()在行上合并 np.hstack((a, b)) # array([[ 8., 5., 1., 9.], # [ 1., 6., 8., 5.]]) ################# vstack ################# #### vstack()在列上合并 np.vstack((a, b)) # array([[ 8., 5.], # [ 1., 6.], # [ 1., 9.], # [ 8., 5.]]) print(np.vstack([a, b, b])) # list 参数 # [[ 1. 4.] a # [ 9. 5.] # [ 7. 6.] b # [ 2. 9.] # [ 7. 6.] b # [ 2. 9.]] print(np.vstack((a, b, b))) # tuple 参数 ################# dstack ################# #### dstack 在深度上进行合并 a = np.zeros((3, 3, 1)) b = np.ones((3, 3, 1)) c = np.ones((3, 3, 1)) * 3 print(np.dstack([a, b, c])) # [[[0. 1. 3.] # [0. 1. 3.] # [0. 1. 3.]] # # [[0. 1. 3.] # [0. 1. 3.] # [0. 1. 3.]] # # [[0. 1. 3.] # [0. 1. 3.] # [0. 1. 3.]]] # 如果是随意增加一列 按行 row_stack 按列 column_stack # print np.row_stack(a, b) ################# concatenate ################# # def concatenate(arrays, axis=None, out=None) a = np.floor(10 * np.random.rand(2, 2)) b = np.floor(10 * np.random.rand(2, 2)) print(np.concatenate((a, b))) ### 默认 axis=0,等价于 vstack # [[1. 9.] # [6. 3.] # [4. 5.] # [6. 3.]] print(np.concatenate((a, b), axis=1)) ### axis=1,等价于 hstack ################# c_ r_ ################# a = np.arange(1, 5) b = np.arange(2, 6) c = np.arange(3, 7) print(np.c_[a, b, c]) # 按列合并 # [[1 2 3] # [2 3 4] # [3 4 5] # [4 5 6]] print(np.r_[a, b, c]) # 按行合并 # [1 2 3 4 2 3 4 5 3 4 5 6] ################################### 切割 ################################### a = np.random.randint(1, 10, size=(2, 5)) print(np.hsplit(a, 1)) ### 切割成 1 部分 # [array([[1, 6, 3, 3, 2], # [8, 5, 6, 3, 3]])] print(np.vsplit(a, 2)) ### 切割成 2 部分 # [array([[1, 6, 3, 3, 2]]), array([[8, 5, 6, 3, 3]])] print(np.hsplit(a, [1])) ### 在行上进行分割,1 代表索引 # [array([[1], # [8]]), array([[6, 3, 3, 2], # [5, 6, 3, 3]])] print(np.hsplit(a, [1, 3])) # [array([[1], # [8]]), array([[6, 3], # [5, 6]]), array([[3, 2], # [3, 3]])] print(np.vsplit(a, [1])) # [array([[1, 6, 3, 3, 2]]), array([[8, 5, 6, 3, 3]])]
注意
numpy 在合并时 行或者列 要保持一致,否则无法合并, 此时可以用 pandas
x = pd.Series(range(1, 5)) # y = pd.Series(range(2, 5)) # 注意 x y 长度不一致 print(pd.concat([x, y], axis=1)) # x y 必须是 ’pandas 格式‘ # 0 1 # 0 1 2.0 # 1 2 3.0 # 2 3 4.0 # 3 4 NaN 自动填充 Nan x = np.arange(1, 5) y = np.arange(2, 5) print(np.vstack((x, y))) # 报错
参考资料: