簡體   English   中英

如何計算 numpy 中數組中最近鄰居的平均值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM