0

我有一个包含以下字段的数据文件:

Index    X.coor     Y.coor    Status    Height   Census
1        197.10001  456.89999 1         696      1
2        84.20000   74.80000  0         356      1
3        282.70001  177.50000 1         439      1
...
999      427.70001  418.10001 0         543      1

这些索引代表地理笛卡尔 XY 网格上的点,如下所示:

在此处输入图像描述

我想在假设空间(面向对象)中绘制点并将地图划分为我指定的维度。例如,上面的网格尺寸为 7x7。然后我想遍历笛卡尔网格上的每个正方形并计算该区域中点的密度。

Density = number of points in square / area of the square

笛卡尔地图上的点位置是固定的。根据我划分笛卡尔 XY 网格的尺寸,正方形的面积会有所不同。你知道任何允许我这样做的 Python 模块吗?我想用 OOP 来做到这一点,这样我就可以跟踪正方形中每个点的其他属性。

我认为我可以做到这一点的一种方法是获取 X 坐标和 Y 坐标的最大值和最小值。这将给我 4 个数据点,我可以用它们来形成一个矩形并计算面积。然后我编写了一个将矩形划分为 X 和 Y 子区域的函数。到目前为止,如果我想要一个 8 x 16 的网格,我将矩形的长度除以 6 并将宽度除以 16 以获得不同大小的正方形。最后我写了一个循环来计算笛卡尔网格每个区域的密度。我可以将每个区域的密度存储在矩阵中。

是否有允许我这样做的 Python 模块?

4

1 回答 1

3

您可能会查看 NumPy 的histogram2d并将其用作

import numpy as np
np.histogram2d(x, y, bins=(nx,ny), normed=True)

nx = ny = 7你的演示案例中。

对于具有随机分布x,y坐标的示例:

x = np.random.random(1000)
y = np.random.random(1000)
nx, ny = 7, 7
H, _, _ = np.histogram2d(x, y, bins=(nx,ny), normed=True)
pylab.imshow(H, interpolation='nearest')
pylab.colorbar()
pylab.show()

在此处输入图像描述

于 2015-04-03T23:36:18.697 回答