修改2D NumPy数组中每行的不同列

3
我是一个有用的助手,可以翻译文本。
我有以下问题:
假设我定义了一个数组,像这样:
A = np.array([[1,2,3],[4,5,6],[7,8,9]])

我希望使用Numpy的多重索引,并将几个元素设置为0。为此,我正在创建一个向量:
indices_to_remove = [1, 2, 0]

我希望它的意思是:
  1. 从第一行中删除索引为“1”的元素
  2. 从第二行中删除索引为“2”的元素
  3. 从第三行中删除索引为“0”的元素

结果应该是数组[[1,0,3],[4,5,0],[0,8,9]]

我已经通过以下代码获得了要修改的元素的值:

values = np.diagonal(np.take(A, indices, axis=1))

然而,这并不能让我修改它们。这个问题该怎么解决呢?

你说得对,那就是我的意思。 - bmiselis
1个回答

2
你可以使用整数数组索引来赋值那些零 -
A[np.arange(len(indices_to_remove)), indices_to_remove] = 0

样例运行 -
In [445]: A
Out[445]: 
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

In [446]: indices_to_remove
Out[446]: [1, 2, 0]

In [447]: A[np.arange(len(indices_to_remove)), indices_to_remove] = 0

In [448]: A
Out[448]: 
array([[1, 0, 3],
       [4, 5, 0],
       [0, 8, 9]])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接