如何在NumPy数组的每个子数组开头添加1?
解决方法:在NumPy数组每个子数组前添加1(用np.ones和np.hstack)
你的代码存在两个关键问题,修正后即可实现需求:
- 原始数组定义错误:Python列表内的元素必须用逗号分隔,且需要先转换为NumPy数组才能使用
np.hstack操作 - np.ones的形状不匹配:你生成的是一维数组,而实际需要的是和X行数一致的二维列向量(每行对应一个1)
正确代码示例:
import numpy as np # 修正数组定义并转为NumPy数组 X = np.array([[3, 4, 5, 6], [6, 5, 3, 3], [9, 8, 5, 2]]) # 生成3行1列的全1数组,形状与X的行数匹配 ones = np.ones((len(X), 1)) # 水平拼接ones和X,实现每个子数组开头加1 X = np.hstack((ones, X)) print(X)
输出结果:
[[1. 3. 4. 5. 6.] [1. 6. 5. 3. 3.] [1. 9. 8. 5. 2.]]
如果需要整数类型的结果,可指定ones的数据类型:
ones = np.ones((len(X), 1), dtype=int)
内容的提问来源于stack exchange,提问作者Saleh
相关产品推荐
相关产品推荐

