如何正确为NumPy二维单元素数组的每行追加相同值?
解决方法
你的错误根源是原始X是二维数组(形状为(11,1)),遍历X时每个value是长度为1的子数组(比如array([6.575])),直接写[value,1]会生成混合结构,numpy无法转换为规整数组。以下是几种可行方案:
方案1:修改列表推导式,取出子数组元素
遍历的时候直接取子数组里的单个值,避免嵌套结构:
import numpy as np X = np.array([[6.575],[6.421],[7.185],[6.998],[6.43],[6.012],[6.172],[5.631],[6.004],[6.377],[6.03]]) # 修改后的列表推导式 X = np.array([[value[0], 1] for value in X])
方案2:用numpy广播拼接(推荐,效率更高)
利用numpy的数组拼接方法,直接给原始数组添加一列全1,适合大数据量场景:
import numpy as np X = np.array([[6.575],[6.421],[7.185],[6.998],[6.43],[6.012],[6.172],[5.631],[6.004],[6.377],[6.03]]) # 生成和X行数相同的全1列数组,然后按列拼接 X = np.hstack((X, np.ones((X.shape[0], 1))))
方案3:用item()提取子数组的单个值
如果习惯用列表推导式,也可以用item()方法直接取出子数组里的数值:
import numpy as np X = np.array([[6.575],[6.421],[7.185],[6.998],[6.43],[6.012],[6.172],[5.631],[6.004],[6.377],[6.03]]) X = np.array([[value.item(), 1] for value in X])
内容的提问来源于stack exchange,提问作者Ashley Roughton
相关产品推荐
相关产品推荐

