我在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