如何对多维numpy数组的指定列进行平方运算?
问题原因
你写的切片X[:,-1:0]存在语法错误:numpy中切片的规则是start:end:step,默认步长为1,从索引-1(最后一列)到0(第一列)用正步长取值会返回空数组,自然赋值操作不会生效。
正确实现方案
方法1:直接索引最后一列(最常用)
如果不需要保留列的二维结构,直接用整数索引取最后一列即可:
X[:, -1] = X[:, -1] ** 2
方法2:保留二维列结构的写法
如果你需要保持切片结果为二维数组(比如后续矩阵运算要求维度匹配),可以用以下两种写法:
- 写法1:用切片保留二维结构
X[:, -1:] = X[:, -1:] ** 2
- 写法2:用
newaxis扩展维度
X[:, -1, np.newaxis] = X[:, -1, np.newaxis] ** 2
验证示例
你可以运行以下代码验证效果:
import numpy as np # 生成47行3列的测试数组 X = np.arange(47*3).reshape(47, 3) # 对最后一列求平方 X[:, -1] = X[:, -1] ** 2 # 查看第一行最后一列的结果,原数值为2,平方后输出4 print(X[0, -1])
内容的提问来源于stack exchange,提问作者נתי איוב
相关产品推荐
相关产品推荐

