在数组上使用np.nonzero后获取正确的尺寸

时间:2016-10-13 10:03:13

标签: python arrays numpy shape zero

在1d数组上使用np.nonzero时:

l = np.array([0, 1, 2, 3, 0])
np.nonzero(l)
array([1,2,3], dtype=int64)

如何以最有效的方式将索引信息作为1d数组而不是元组?

3 个答案:

答案 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]