代码整理
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))) # 报错
参考资料:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)