python - 根据二维索引替换二维 numpy 数组元素

标签 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,0]])

现在我想根据idx中的索引将A中对应的元素替换为0。 基本上,我想执行 A[idx]=0,但这是行不通的。

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

最好,建议的解决方案应该可扩展到更高维(3D 及以上)阵列。

最佳答案

你可以试试:

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

输出:

[[0 3 4]
 [0 0 4]
 [3 0 5]]

如果您的维度过多而无法对其进行硬编码,您可以使用:

A[tuple(idx.T)]=0

关于python - 根据二维索引替换二维 numpy 数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61490961/

相关文章:

python - 如何在 Python 中搜索序列中的值?

python - 删除后面没有其他 pd.Series 中的索引的索引

python - 制定线性整数规划约束

python - 为一组去重复的点生成索引的 numpy 数组

python - 如何取消 Pandas 数据透视表的透视?

php - 动态创建一个用 N 个空元素初始化的数组

java - 在java中,如何检查一维数组中的元素是否彼此不同?

c - 错误: Invalid use of flexible array member

python - 从概率矩阵中随机选择

python - 为 3D numpy 数组中的每个元素传递多个条件的更有效方法