gpt4 book ai didi

Python Numpy 非零

转载 作者:太空狗 更新时间:2023-10-30 01:08:11 28 4
gpt4 key购买 nike

所以我得到了这个形状为 (31641600,2) 的 numpy 数组,其中有一些零值,如果不是很多的话。

我们称这个数组为 X。

正在做:

print len(X)
>>> 31641600

然后做:

X = X[np.nonzero(X)]
print len(X)
>>> 31919809

不明白为什么第二个更大。关于Documentation它说应用上述方法应该只返回非零值,因此 X 的长度应该更小。

有什么想法吗?谢谢。

最佳答案

这可能是因为 len(X) 只返回 X 沿第一个轴的长度。当你做的时候

X = X[np.nonzero(X)]

你得到一个一维数组,所以如果你在 X 中的零少于 50%,len(X) 将会增加。

考虑:

In [1]: import numpy as np

In [2]: X = np.zeros((42, 2))

In [3]: X[:, 0] = 1

In [4]: X[0, 1] = 1

In [5]: len(X)
Out[5]: 42

In [6]: len(X[np.nonzero(X)])
Out[6]: 43

那是因为 X[np.nonzero(X)] 是一个包含 43 个一的数组:

In [7]: X[np.nonzero(X)].shape
Out[7]: (43,)

根据评论更新:如果实际上您想要第一个元素非零的所有对,您可以这样做:

X = X[ X[:, 0] != 0 ]

关于Python Numpy 非零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24412396/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com