gpt4 book ai didi

python - 如何在 numpy 中进行条件行求和?

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:18 24 4
gpt4 key购买 nike

我有一个 numpy 二维数组,其中包含正项和 -1 值,它们是缺失值。我想对这个矩阵的行求和而不包括 -1 值。有什么方法可以在 numpy 中执行条件行求和吗?

最佳答案

方法 #1:乘以一个 bool 数组,这是有效的,因为 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:使用相同的 bool 数组(好吧,翻转了——之前我们想知道要保留哪些,现在要忽略哪些)作为 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。]

关于python - 如何在 numpy 中进行条件行求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16512227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com