Python 在每个网格单元中查找数组的索引?

Python 在每个网格单元中查找数组的索引?,python,numpy,matplotlib,scipy,Python,Numpy,Matplotlib,Scipy,我有一套数据。它们分布在x-y位置,但它们还有其他特征,如大小。我喜欢在x-y平面上对数据进行网格化,然后获得每个点的网格索引,然后计算每个网格单元中大小的平均值或标准偏差。我想看看在x-y平面上的位置是否和尺寸有关。旧的方式是写两个循环,并制作一个3D矩阵,以保持每个单元格中的数据索引。我想知道numpy或python中是否有这样的类 我知道我可以使用np.historogram2d但它只返回每个网格中的点数,而不返回每个点中数组的索引,或者matplotlib.mlab.griddata在网

我有一套数据。它们分布在x-y位置,但它们还有其他特征,如大小。我喜欢在x-y平面上对数据进行网格化,然后获得每个点的网格索引,然后计算每个网格单元中大小的平均值或标准偏差。我想看看在x-y平面上的位置是否和尺寸有关。旧的方式是写两个循环,并制作一个3D矩阵,以保持每个单元格中的数据索引。我想知道numpy或python中是否有这样的类

我知道我可以使用
np.historogram2d
但它只返回每个网格中的点数,而不返回每个点中数组的索引,或者
matplotlib.mlab.griddata
在网格单元之间以某种方式插值,但我不需要任何插值。我只是想得到每个网格单元中点的索引

xmin=min(Xpos);xmax=max(Xpos)
ymin=min(Ypos);ymax=max(Ypos)
ngridx = 10
ngridy = 10

xi = np.linspace(np.floor(xmin),np.ceil(xmax),ngridx)
yi = np.linspace(np.floor(ymin),np.ceil(ymax),ngridy)
H, xedges, yedges = np.histogram2d(Ypos, Xpos, bins=(xi, yi), normed=False)
np.historogram2d
的输出如下所示:

>>>H
array([[  17.,  114.,  301.,  321.,  308.,  163.,  171.,  298.,  316.],
       [ 223.,  211.,  291.,  323.,  282.,  195.,  263.,  198.,  174.],
       [ 304.,  312.,  322.,  295.,  218.,  295.,  259.,  209.,   80.],
       [ 204.,  260.,  298.,  261.,  296.,  241.,   47.,  133.,  189.],
       [ 270.,  265.,  245.,  265.,  286.,  236.,  108.,  214.,  275.],
       [ 276.,  198.,  275.,  235.,  261.,  267.,  223.,  306.,  282.],
       [ 246.,   60.,   88.,  189.,  259.,  225.,  302.,  306.,  328.],
       [ 292.,  138.,    0.,  141.,  297.,  308.,  314.,  276.,  317.],
       [ 169.,  203.,   67.,  220.,  261.,  306.,  329.,  250.,  277.]])
但是我想得到每个网格单元中的索引。我正在寻找最快的方法。 我想出了这个主意。我不知道这是否是最好的方式:

for i in range(len(xi)-1):
    for j in range(len(yi)-1):
        bxlow=(Xpos>xi[i]); bxup=(Xpos<=xi[i+1])
        bx=bxlow*bxup
        bylow=(Ypos>yi[j]); byup=(Ypos<=yi[j+1])
        by=bylow*byup
        bprim=bx*by
范围内的i(len(xi)-1):
对于范围内的j(len(yi)-1):

bxlow=(Xpos>xi[i]);bxup=(Xposyi[j]);byup=(Ypos您可能正在寻找numpy.index

比如:

 row, col = np.indices( H.shape )
你会得到你想要的

或者,你可能想要x,y坐标?在这种情况下

np.meshgrid(xi,yi)

你能不能也展示一些你所取得的进步的代码,以便我们更好地理解你的问题?请用一个例子展示一些代码…为什么不简单地计算x、y和大小变量之间的相关性?@sshashank124这是一个大数据集,我想以最快的方式来做,因为我想要很多属性对它们进行统计。添加了一小段代码。@gnocalopp我不明白怎么做?