使用np.append合并不同长度数组失败,如何实现类似R的多向量合并?
在NumPy中合并不同长度的一维数组
要实现和R中c(a,b,c)一样的合并效果,你可以使用NumPy的np.concatenate函数,这是合并一维数组的标准方法,无论数组长度是否一致都能正常工作:
import numpy as np a = np.array([1,2,3]) b = np.array([4,5,6,7]) c = np.array([8,9,10]) d = np.concatenate([a, b, c]) print(d)
运行后会得到你想要的结果:
[ 1 2 3 4 5 6 7 8 9 10]
为什么你的np.append用法会出错
当你执行np.append(a, (b,c))时,因为b和c长度不同,元组(b,c)无法被转换为一个规则的多维数组,NumPy会将其视为一个包含两个数组的object类型序列,最终得到的是混合数值和数组的object数组,而非纯数值的一维数组。
如果坚持要用np.append,可以先把b和c合并后再传入:
d = np.append(a, np.concatenate([b, c]))
不过更推荐直接使用np.concatenate,它语义更清晰,效率也更高。
内容的提问来源于stack exchange,提问作者Count
相关产品推荐
相关产品推荐

