【问题标题】:Replace 2D numpy array elements based on 2D indexes [duplicate]根据 2D 索引替换 2D numpy 数组元素 [重复]
【发布时间】:2020-04-28 22:20:12
【问题描述】:

这个问题可能以前有人问过,但经过一番搜索后我找不到任何问题,因此在这里发布。

假设我有一个数组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]])

现在我想根据idx0 中的索引替换A 中的相应元素。 基本上,我想做A[idx]=0,这是行不通的。

如何在不运行循环的情况下有效地做到这一点?

建议的解决方案最好可以扩展到更高维(3D 及以上)的数组。

【问题讨论】:

    标签: python arrays numpy indexing


    【解决方案1】:

    你可以试试:

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

    输出:

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

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

    A[tuple(idx.T)]=0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-04
      • 2019-01-11
      • 2018-08-10
      • 2014-10-01
      • 2017-10-27
      • 2022-01-07
      • 1970-01-01
      • 2016-03-23
      相关资源
      最近更新 更多