在没有for循环的情况下,在特定位置修改Numpy 2D数组的元素

时间:2019-08-20 15:43:25

标签: python arrays numpy numpy-ndarray

我有一个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循环的情况下有效地完成这项工作。

2 个答案:

答案 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