【发布时间】:2013-12-23 18:52:38
【问题描述】:
我有一个如下创建的 Numpy 数组
data=np.zeros(500,dtype='float32, (50000,2)float32')
这个数组填充了我从一些测量中获得的值,并且应该反映在每个时间点(500 个时间点的空间)我们可以获得 50.000 个 x 和 y 坐标。
稍后在我的代码中使用类似bisect 的搜索,我需要知道我最初使用np.count_nonzero(data) 所做的数组中实际上有多少X 坐标(测量点),这产生了以下问题:
Fake data:
1 1
2 2
3 0
4 4
5 0
6 6
7 7
8 8
9 9
10 10
这里的非零计数返回 18 个值,然后代码进入类似 bisect 的搜索,使用 data[time][1][0][0] 作为最小 X 坐标和 data[time][1][(np.count_nonzero(data)][0] 作为最大 X 坐标,导致数组停止在 9而不是 10。
我可以使用 while 循环手动计算数组中的非零值(在 X 坐标列中),但这很愚蠢,我假设有一些内置的 numpy 功能。我的问题是我需要什么内置功能或修改我的np.count_nonzero(data),因为文档没有提供太多这方面的信息(link 到 numpy doc)。
-- 简化问题--
我可以使用 Numpy 功能仅计算单数列的非零值吗? (即在data[time][1][0][0] 和data[time][1][max][0] 之间)
【问题讨论】: