在1d数组上使用np.nonzero时:
l = np.array([0, 1, 2, 3, 0])
np.nonzero(l)
array([1,2,3], dtype=int64)
如何以最有效的方式将索引信息作为1d数组而不是元组?
答案 0 :(得分:0)
np.nonzero
将仅将索引信息作为1d元组返回。但是,如果您正在寻找替代方案,请使用np.argwhere
import numpy as np
l = np.array([0, 1, 2, 3, 0])
non_zero = np.argwhere(l!=0)
但是,这将返回一个列矩阵。要将其转换为行矩阵,
non_zero = non_zero.T[0]
答案 1 :(得分:0)
您正在寻找np.flatnonzero
用于1D
数组 -
In [5]: l
Out[5]: array([0, 1, 2, 3, 0])
In [6]: np.flatnonzero(l)
Out[6]: array([1, 2, 3])
答案 2 :(得分:0)
只需索引元组
Idn = np.nonzero(l)[0]
flatnonzero
代码
return a.ravel().nonzero()[0]