如何使用NumPy在Python中将多个数组合并为一个数组
合并多个NumPy数组的正确方法
你用+运算符失败是因为NumPy里的+是元素级加法,它会将四个数组对应位置的元素相加,最终得到的还是一个(500, 2)的数组,而不是把它们拼接成一个更大的数组。
要实现数组合并,推荐这几种实用方法:
方法1:通用合并函数np.concatenate
可以指定合并的轴方向,灵活性最高:
import numpy as np # 生成目标数组 arr1 = np.random.normal([0, 0], size=(500, 2)) arr2 = np.random.normal([5, 5], size=(500, 2)) arr3 = np.random.normal([5, 0], size=(500, 2)) arr4 = np.random.normal([0, 5], size=(500, 2)) # 按行合并(轴0),得到(2000, 2)的数组 merged_arr = np.concatenate([arr1, arr2, arr3, arr4], axis=0)
方法2:垂直合并快捷写法np.vstack
如果是按行垂直拼接,np.vstack是更简洁的选择,效果和concatenate(axis=0)完全一致:
merged_arr = np.vstack([arr1, arr2, arr3, arr4])
方法3:索引语法糖np.r_[...]
这是NumPy提供的语法糖,同样用于垂直合并,写法更紧凑:
merged_arr = np.r_[arr1, arr2, arr3, arr4]
如果需要按列合并(最终得到(500, 8)的数组),只需把axis=0改为axis=1,或者使用np.hstack/np.c_[...]即可。
内容的提问来源于stack exchange,提问作者IdanSi
相关产品推荐
相关产品推荐

