【发布时间】:2020-07-07 01:11:43
【问题描述】:
在下面的 numpy 数组中获取值 1 的所有 (i,j) 索引的最快方法是什么?
import numpy as np
arr = [[1, 0, 1], [0, 0, 0], [0, 1, 0]]
arr = np.array(arr)
arr
array([[1, 0, 1],
[0, 0, 0],
[0, 1, 0]])
我尝试过使用嵌套的 for 循环 for i for j,但对于较大的数据集,这需要 O(n^2)。我也尝试过使用np.where(arr == 1),但没有得到 (i,j) 索引:
np.where(arr == 1)
(array([0, 0, 2]), array([0, 2, 1])) # not (i,j) indices
获取 (i,j) 索引的更好或更快的方法是什么?
【问题讨论】:
-
where给出索引 - 作为数组的元组。这确实是最有用的形式,因为它可以直接用于索引数组。必须一个一个地应用一个元组列表,速度要慢得多。
标签: python arrays numpy matrix