使用np.append向ndarray追加列时报ValueError错误如何解决
错误原因
你传入的[m[:,0], m[:,1]]会被numpy先组装为shape=(2, 20640)的二维数组,和原数组x的shape=(20640,7)在0维的长度不匹配,所以拼接失败。
正确写法
方案1:直接提取m的对应列拼接(最推荐)
你要追加的两列本身就是m的前两列,无需拆分为两个一维数组再组装,直接提取后拼接即可:
import numpy as np x = np.ones((20640, 7)) m = np.ones((20640, 2)) # m[:,:2]本身就是shape=(20640,2)的二维数组,和x的0维长度完全匹配 res = np.append(x, m[:, :2], axis=1)
最终得到的res的shape为(20640, 9),符合预期。
方案2:单独拼接两个一维数组
如果你确实需要单独处理两个一维数组再拼接,可以用np.c_直接按列组装,会自动将一维数组转为列向量:
res = np.c_[x, m[:,0], m[:,1]]
内容的提问来源于stack exchange,提问作者user3668129
相关产品推荐
相关产品推荐

