我有一組數據。他們分佈在x-y職位,但他們有其他特徵,如大小。我喜歡在x-y平面中網格化數據,然後獲取每個點的網格索引,然後計算每個網格單元中大小的平均值或標準偏差。我想看看是否與x-y平面中的位置與大小有關。舊式的方式是編寫兩個循環並製作一個3D矩陣,以保持每個單元格中的數據索引。我想知道在numpy或python中是否有這樣的類?查找每個網格單元格中數組的索引?
我知道我可以使用np.histogram2d
,但它只是返回每個網格中點的數量,但不是每個點中的數組索引或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.histogram2d
輸出看起來是這樣的:
>>>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
使用bprim
區分的網格數據。 有什麼更好的建議?
您是否還可以顯示一些代碼,並說明您已取得進展,以便我們更好地理解您的問題? – sshashank124
請用一個例子顯示一些代碼... – logc
爲什麼不簡單計算x,y和大小變量之間的相關性? – goncalopp