首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在numpy中做条件行求和?

如何在numpy中做条件行求和?
EN

Stack Overflow用户
提问于 2013-05-13 05:28:56
回答 1查看 4.1K关注 0票数 3

我有一个numpy 2d数组,其中包括正的条目和-1的值,它们是缺少的值。我想在不包括-1值的情况下对这个矩阵的行求和。有没有办法在numpy中执行条件行求和?

EN

回答 1

Stack Overflow用户

发布于 2013-05-13 05:41:24

方法#1:乘以一个布尔数组,因为True的行为是1,而False的行为是0:

代码语言:javascript
复制
>>> 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的正式掩码。

代码语言:javascript
复制
>>> 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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16512227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档