我在numpy中有一個NxM數組,我想取日誌,忽略在取得日誌之前爲負數的條目。當我記錄負值條目時,它會返回-Inf,所以我將得到一個帶有一些-Inf值的矩陣。然後我想總結這個矩陣的列,但忽略-Inf值 - 我該怎麼做?忽略在Python中使用numpy/scipy的數組中的INF值
例如,
mylogarray = log(myarray)
# take sum, but ignore -Inf?
sum(mylogarray, 0)
我知道有nansum,我需要相當於像infsum。
謝謝。
你可以請擴展一下嗎?我不明白這個例子。你是如何初始化上面的屏蔽數組的? – user248237dfsf 2010-12-20 00:35:42
@ user248237 - 「numpy.ma.log」等函數將自動創建一個掩碼數組,其中導致「inf」或「nan」的任何內容都被屏蔽。但是,這樣做有點不那麼明確,所以你可以這樣做:'a = np.ma.masked_where(a == np.inf,a)',然後做'b = np.log(a)' (或任何其他功能)。或者,您可以避免使用掩碼數組,只需執行'np.log(a [a!= np.inf])。sum()'(您可以通過布爾數組進行索引,它比基於'filter'答案) – 2010-12-20 03:19:47
@ user248237我沒有明確地初始化被屏蔽的數組。 'a'只是一個普通的非掩碼數組。 'ma.log'掩蓋(實數)對數未定義的所有值。然後,生成的掩碼數組「b」被粗略對待,就好像掩碼條目不存在一樣。 – Philipp 2010-12-22 01:10:52