我有一个Numpy 2D数组a
和一个索引列表list_indices
。我想在a
中指定的每个索引处修改数组list_indices
的元素。
我当前使用的方法是使用for循环。例如,如果我想更改这些元素的符号:
for index in list_indices:
a[index[0],index[1]] = -np.sign(a[index[0],index[1]])
我想知道是否可以在没有for循环的情况下有效地完成这项工作。
答案 0 :(得分:2)
您需要更改list_indices
的格式。正如您在评论中提到的,list_indices
可能是[[0,0],[1,1],[2,2]]
。如果您改为将其更改为[[0,1,2],[0,1,2]]
(第一个轴的第一个索引,然后第二个索引),则将起作用:
a[list_indices] *= -1
例如平方它们:
a[list_indices] = a[list_indices]**2
答案 1 :(得分:0)
如果我将数组定义为numpy数组,然后使用numpy拼接,这对我有用:
a = np.zeros((6,6))
b = [[1,2],[1,3],[2,2],[2,3]]
b = np.array(b)
a[b[:,0],b[:,1]] +=2