gpt4 book ai didi

python - 使用 Python 高效查找每个像素中的点

转载 作者:行者123 更新时间:2023-12-01 01:17:59 25 4
gpt4 key购买 nike

我有一个代表一组像素的二维网格。对于每个像素,我都有左上角的坐标。

我还有一长串随机分布的 2D 点。我正在寻找一种有效的方法来查找每个像素中存在的点的索引。

目前我有以下内容:

import numpy as np
xgrid = np.linspace(0,10,11)
ygrid = np.linspace(0,10,11)

X_random_points = np.random.rand(int(1e7))*10
Y_random_points = np.random.rand(int(1e7))*10

for iterationX in range(0,len(xgrid)-1):
for iterationY in range(0,len(ygrid)-1):
valuesInCube = (X_random_points<xgrid[iterationX]) & (X_random_points>xgrid[iterationX-1]) & (Y_random_points<ygrid[iterationY]) &(Y_random_points>ygrid[iterationY-1])

我想知道是否有人知道如何使其更快?

最佳答案

我可以给你一个可能仍然有用的相关方法。您可以找到每个点属于哪个像素。函数 numpy.digitize 和 scipy.stats.binned_statistic_2d 在这里很有用。 scipy.stats.binned_statistic_2d 感觉有点笨拙,因为它不仅仅是对你的点进行分类,还要求你为每个 x,y 点提供一些值。

您应该注意,bin 编号从 1 开始计数(而不是 0)。

x_p, y_p = np.digitize(X_random_points, xgrid), np.digitize(Y_random_points, xgrid)

# OR #

_, _, _, (x_p, y_p) = scipy.stats.binned_statistic_2d(X_random_points, Y_random_points, np.zeros(len(X_random_points)), bins=(xgrid, ygrid), expand_binnumbers=True)

对于特定像素,您甚至可以从 x_py_p 中找到属于该像素的所有点。

关于python - 使用 Python 高效查找每个像素中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54136094/

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