gpt4 book ai didi

python - 仅在 numpy 数组的 1 列中计算非零值

转载 作者:太空宇宙 更新时间:2023-11-04 01:22:21 25 4
gpt4 key购买 nike

我有一个如下创建的 Numpy 数组

data=np.zeros(500,dtype='float32, (50000,2)float32')

这个数组充满了我从一些测量中获得的值,并且应该反射(reflect)在每个时间点(500 个时间点的空间)我们可以获得 50.000 个 x 和 y 坐标。

稍后在我的代码中使用类似于 bisect 的搜索,我需要知道我的数组中实际上有多少 X 坐标(测量点),而我最初使用 np. count_nonzero(data),这产生了以下问题:

Fake data:

1 1
2 2
3 0
4 4
5 0
6 6
7 7
8 8
9 9
10 10

非零计数在这里返回 18 个值,然后代码使用 data[time][1][0][0] 进入类似bisect 的搜索作为最小 X 坐标和 data[time][1][(np.count_nonzero(data)][0] 作为最大 x 坐标,这导致数组停在 9 而不是 10。

我可以使用 while 循环手动计算数组中的非零值(在 X 坐标列中),但这很愚蠢,我假设有一些内置的 numpy 功能可以做到这一点。我的问题是我需要什么内置功能或修改我的 np.count_nonzero(data) 因为文档没有提供太多这方面的信息(link 到 numpy 文档)。

-- 简化的问题 --

我可以使用 Numpy 功能来计算单个列的非零值吗? (即在 data[time][1][0][0]data[time][1][max][0] 之间)

最佳答案

也许更好的方法是使用 nonzero 过滤数组并迭代结果:

nonZeroData = data[np.nonzero(data[time][1])]

仅从第二列计算零:

nonZeroYCount = np.count_nonzero(data[time][1][:, 1])

关于python - 仅在 numpy 数组的 1 列中计算非零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20423598/

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