[英]How to calculate the average of 2 different numpy array pairs of bunch of points in list?
[英]How to calculate average of closest neighbours in an array in numpy
給定一個以實數作為條目的任意數組,我想返回一個具有相同形狀的數組,其條目是原始數組最近鄰居的平均值。
在給定維數為 2 的數組的情況下,我的意思是,如果數組的形狀 (n,m) 帶有條目 a_{i,j},那么在條目 (i,j) 上的值新數組應該是:
平均(i,j)=1/4 (a_{i+1,j} + a_{i-1,j} + a_{i,j+1} + a_{i,j-1}),
其中第一個索引取 mod n,第二個取 mod m。
我想創建一個 function ,其參數是任意數組,並返回一個形狀相同的數組,並輸入給定數組最近鄰居上的條目的平均值(對於 d 維數組,有 2d 最近的鄰居,通過對每個索引求和 +1 和 -1 獲得)
我知道如何使用 d 嵌套的 for 循環對固定維度 d 執行此操作(只是推廣上述等式),但我不知道在維度不固定時如何執行此操作。
Scipy 有一個 scipy.ndimage.convolve function,它可以做到這一點。 它需要數組和一個值矩陣來與鄰居相乘。 它應該適用於任意數量的維度。
但是,如果您嘗試手動編寫此 function,我建議嘗試迭代或遞歸方法,其中每個迭代或遞歸層處理一個維度。 在 3D 案例中,您將首先處理第一個維度,並獲得該維度中鄰居值的六分之一。 下一次迭代將對維度 2 執行相同的操作,依此類推。
與每個鄰居相乘的因子是 1/(2n),因為每個條目在每個維度上都有 2 個鄰居。 這應該擴展到任意數量的維度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.