我有一个numpy 2d数组,其中包括正的条目和-1的值,它们是缺少的值。我想在不包括-1值的情况下对这个矩阵的行求和。有没有办法在numpy中执行条件行求和?
发布于 2013-05-13 05:41:24
方法#1:乘以一个布尔数组,因为True的行为是1,而False的行为是0:
>>> a
array([[ 1, 3, 0, 4, 2],
[ 2, 1, 4, -1, 1],
[-1, 2, 4, 4, 4],
[ 4, 4, 4, 4, 0],
[ 0, 2, 4, 1, 2]])
>>> (a * (a != -1)).sum(axis=1)
array([10, 8, 14, 16, 9])方法#2:使用相同的布尔数组(好吧,翻转的--在我们想知道哪些应该保留,现在哪些应该忽略)作为MaskedArray的正式掩码。
>>> am = np.ma.MaskedArray(a, mask=(a==-1))
>>> am
masked_array(data =
[[1 3 0 4 2]
[2 1 4 -- 1]
[-- 2 4 4 4]
[4 4 4 4 0]
[0 2 4 1 2]],
mask =
[[False False False False False]
[False False False True False]
[ True False False False False]
[False False False False False]
[False False False False False]],
fill_value = 999999)
>>> am.sum(axis=1)
masked_array(data = [10 8 14 16 9],
mask = [False False False False False],
fill_value = 999999)不过,老实说,我几乎从不使用MaskedArray。
https://stackoverflow.com/questions/16512227
复制相似问题