【问题标题】:Numpy get index of arange in 2d arrayNumpy获取二维数组中arange的索引
【发布时间】:2021-02-19 12:53:48
【问题描述】:

考虑以下 numpy 数组:

import numpy as np
arr = np.array([np.random.permutation(4) for _ in range(4)])

array([[0, 1, 2, 3],
       [3, 1, 0, 2],
       [1, 2, 0, 3],
       [0, 2, 3, 1]])

我希望能够从数组中获取 np.arange(4) 的索引。 即在第 0 行获取 0 的索引,在第 1 行获取 1 的索引,依此类推。

即对于这个特定的例子:

array([0, 1, 1, 2])

在 numpy 中是否有比循环遍历每一行并获取索引更有效的方法:

alist = []
for ridx in range(arr.shape[0]):
    alist.append(arr[ridx].tolist().index(ridx))
ans = np.array(alist)

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    试试这个

    np.nonzero(arr == np.arange(arr.shape[0])[:,None])[1]
    
    Out[15]: array([0, 1, 1, 2], dtype=int64)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-07
      • 2020-07-30
      • 1970-01-01
      • 2021-02-27
      • 2020-02-16
      • 2015-05-19
      • 2012-04-10
      • 1970-01-01
      相关资源
      最近更新 更多