【问题标题】:Performing operation on 2D array using indices from 1D array使用一维数组的索引对二维数组执行操作
【发布时间】:2023-01-24 14:20:48
【问题描述】:

我在 python 中有以下数组:

a = np.array([[1,1,1],[1,1,1],[1,1,1]])

和以下索引数组:

b = np.array([0,1,2])

我想使用 b 对 a 进行索引,以便我可以从匹配的行/列中减去 1 并得到以下结果:

[[0,1,1],[0,1,0],[0,0,1]]

我可以使用循环来做到这一点,想知道是否有一种“非循环”的方式来做到这一点。

【问题讨论】:

    标签: python arrays numpy indexing


    【解决方案1】:

    是的,您可以使用高级索引来实现这一点,而无需使用循环。

    下面是一个示例,说明如何使用 b 数组来索引 a 的行和列:

    a[b,b] -= 1
    

    这将从 b 中索引指定的位置处的元素减去 1,从而产生所需的输出:

    [[0,1,1],
    [0,1,0],
    [0,0,1]]
    

    您还可以使用 np.ix_ 生成矩阵的索引,然后减去 1 以获得相同的结果

    a[np.ix_(b,b)] -= 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 2012-04-10
      • 2021-06-04
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多