![](/img/trans.png)
[英]Singular value decomposition (svd) and mean does not exclude masked values during computation
[英]Numpy array mean function did not exclude masked element in mean computation
我是python編程的新手,如果我的問題太基礎了,請原諒我。 但是我試圖使用masked_array來計算三個數組的均值以生成第三個數組,而不使用值小於零的元素。 使用以下步驟:
import numpy as np
from numpy.ma import masked_array
d=[]
a = np.array([[-2,-3,-4,-6],[5,2,6,1],[9,3,2,4],[3,1,1,2]])
b = np.array([[3,4,2,4],[5,2,6,1],[9,3,2,4],[0.3,12,1,3]])
c = np.array([[2,3,4,5],[7,0,1,5],[10,9,2,3],[1.5,2.01,2,0.2]])
mask = (a <= 0).astype(int)
a = masked_array(a,mask)
d.append(a)
d.append(b)
d.append(c)
result = np.array(d).mean(axis=0)
print result
[[ 1. 1.33333333 0.66666667 1. ]
[ 5.66666667 1.33333333 4.33333333 2.33333333]
[ 9.33333333 5. 2. 3.66666667]
[ 1.6 5.00333333 1.33333333 1.73333333]]
我認為(從文檔中得知)如果對帶有掩碼值的數組使用numpy數組均值函數,則在計算均值時將不考慮它們(掩碼值)。 我期望結果是
[[ 2.5 3.5 3. 4.5 ]
[ 5.66666667 1.33333333 4.33333333 2.33333333]
[ 9.33333333 5. 2. 3.66666667]
[ 1.6 5.00333333 1.33333333 1.73333333]]
請問,有人對我如何使用numpy.ma.masked_array進行存檔有一些提示嗎?
問題在於np.array(d)
不會創建掩碼數組。 當列表d
中的數組組裝成更大的(非掩碼)數組時, a
的掩碼會丟失。
解決它的一種方法是替換它:
result = np.array(d).mean(axis=0)
同
result = masked_array(d).mean(axis=0)
例如:
In [27]: result = masked_array(d).mean(axis=0)
In [28]: result
Out[28]:
masked_array(data =
[[2.5 3.5 3.0 4.5]
[5.666666666666667 1.3333333333333333 4.333333333333333 2.3333333333333335]
[9.333333333333334 5.0 2.0 3.6666666666666665]
[1.5999999999999999 5.003333333333333 1.3333333333333333
1.7333333333333334]],
mask =
[[False False False False]
[False False False False]
[False False False False]
[False False False False]],
fill_value = 1e+20)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.