如何拼接包含一维和零维NumPy数组的混合列表?
解决一维与零维NumPy数组的单行拼接问题
当然可以搞定这个问题!你遇到的报错是因为concatenate要求所有待拼接的数组维度数必须一致,而零维数组(标量数组)不符合这个要求。不过我们有几种简洁的单行方案:
方法1:用numpy.r_快速拼接(最省心)
numpy.r_是NumPy专门用于数组拼接的便捷工具,它会自动处理不同维度的数组,把零维数组自动提升为一维后完成拼接:
from numpy import array, r_ result = r_[array([1.0, 2.0]), array(3.0)]
执行后结果就是:array([1., 2., 3.]),完全符合预期。
方法2:用concatenate配合维度转换
如果你更倾向于使用concatenate,只需要把零维数组转换成一维数组即可,有两种简洁写法:
from numpy import array, concatenate # 写法1:用列表包装零维数组 result = concatenate([array([1.0, 2.0]), [array(3.0)]]) # 写法2:通过None添加新轴转成一维 result = concatenate([array([1.0, 2.0]), array(3.0)[None]])
两种方式都是把array(3.0)这个零维数组转换成array([3.0])这样的一维数组,让concatenate可以正常工作。
如果你的混合列表里有多个不同维度的数组,numpy.r_会是更高效的选择——不需要逐个处理每个数组的维度,直接传入列表就能完成拼接。
内容的提问来源于stack exchange,提问作者Robert Manson-Sawko
相关产品推荐
相关产品推荐

