Python 基于二维索引替换二维numpy数组元素

Python 基于二维索引替换二维numpy数组元素,python,arrays,numpy,indexing,Python,Arrays,Numpy,Indexing,这个问题以前可能在某个地方被问过,但我在搜索后找不到任何问题,因此在这里发布 假设我有一个数组A和一个索引数组idx。暂时让两个数组都是二维的 import numpy as np A = np.array([[3,3,4], [4,5,4], [3,4,5]]) idx = np.array([[1,1], [2,1], [1,0], [0

这个问题以前可能在某个地方被问过,但我在搜索后找不到任何问题,因此在这里发布

假设我有一个数组
A
和一个索引数组
idx
。暂时让两个数组都是二维的

import numpy as np

A = np.array([[3,3,4],
              [4,5,4],
              [3,4,5]])

idx = np.array([[1,1],
                [2,1],
                [1,0],
                [0,0]])
现在,我想根据
idx
中的索引将
A
中的相应元素替换为
0
。 基本上,我想做[code>A[idx]=0,这是行不通的

如何在不运行循环的情况下高效地执行此操作

优选地,所提议的解决方案应可扩展到更高维(3D及以上)阵列

您可以尝试:

A[idx[:,0], idx[:,1]]=0
输出:

[[0 3 4]
 [0 0 4]
 [3 0 5]]
如果尺寸过多,无法硬编码,可以使用:

A[tuple(idx.T)]=0

请签出较大尺寸的编辑。它确实有效。谢谢