python - 计算网格框中的点

标签 python

假设有一个网格,其中有一些点,如下图所示。 Demo 我的目标是计算每格网格的点数。这是我的第一次尝试。

            for tupel in point_list:
               a=0
               b=0
               for i in self.boxvector:
                  if tupel[0] < i:
                     a=self.boxvector.index(i)-1
                     break

               for i in self.boxvector:
                  if tupel[1] < i:
                     b=self.boxvector.index(i)-1
                     break

               farray[a][b]+=1

它有效,但速度很慢。有没有加快一点的?

我使用名为 boxvector 的变量来定义网格。在这个例子中,boxvector 是:boxvector = [-1., -.5, 0, .5, 1.]。网格始终是最大值为 -1 和 1 的二次方。 这些框通过 farray 表示,看起来像 farray = [[0,0,0,0],[0,0,0,0],[0,0,0, 0],[0,0,0,0]]。因此,每次算法在相应的框中找到一个点时,每个框都有一个值,该值会递增。 point_list 的形式为 point_list = [(x0,y0),(x1,y1),(x3,y3), ...]

感谢您的帮助!

最佳答案

鉴于您似乎已经在使用 matplotlib,只需使用 numpy.histogram2d .

举个例子:

import numpy as np
import matplotlib.pyplot as plt

t = np.linspace(0, 4*np.pi, 100)
x = np.cos(3 * t)
y = np.sin(t)

gridx = np.linspace(-1, 1, 5)
gridy = np.linspace(-1, 1, 5)

grid, _, _ = np.histogram2d(x, y, bins=[gridx, gridy])

plt.figure()
plt.plot(x, y, 'ro')
plt.grid(True)

plt.figure()
plt.pcolormesh(gridx, gridy, grid)
plt.plot(x, y, 'ro')
plt.colorbar()

plt.show()

enter image description here

enter image description here

关于python - 计算网格框中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11015252/

相关文章:

python - Django Rest Framework - 如何测试 ViewSet?

python - 有没有更好的方法将模型转换为格式良好的 JSON 字符串?

Windows 中用于符号链接(symbolic link)的 Python os.path.realpath()

python - 如何使用 pandas 计算四分位数前滚?

python - 从并发请求的分布式工作中发回正确的信息

python - PyQt 中的 Qcombobox,如何在一个组合框中设置取决于其他组合框选择的选项?

python - 谁能解释为什么这种排序不起作用?

python - 如何在Python中将 "ls-ltr | grep *.txt | cut -1 "的输出重定向到列表

python - 优先队列 : parallel processing

python - macOS BigSur 上 python 版本的问题