Python更新多维NumPy数组仅修改右列并保留左列的实现方法
NumPy数组单列修改问题解决
你原有代码的问题在于:indx = indx[:,1] + number 这行直接把原本的二维数组变量重新赋值为右列计算后得到的一维数组,直接覆盖了原有数组的左列内容,因此输出只有一维的右列计算结果。
修正方案
直接对右列切片做原位运算即可,不需要重新赋值整个数组:
import numpy as np number = 3 indx=np.array([[ 0, 1], [ 1, 765], [ 0, 4355], [ 1, 9364], [ 0, 12110], [ 1, 15233], [ 0, 16246], [ 1, 18889]]) # 仅对第二列(索引为1)做加法,左列内容保持不变 indx[:,1] += number print(indx)
运行后输出和你预期的结果完全一致:
[[ 0 4] [ 1 768] [ 0 4358] [ 1 9367] [ 0 12113] [ 1 15236] [ 0 16249] [ 1 18892]]
如果你需要保留原始数组不被修改,可以先拷贝数组再操作:
new_indx = indx.copy() new_indx[:,1] += number
内容的提问来源于stack exchange,提问作者georgehere
相关产品推荐
相关产品推荐

