布尔数组中索引的Numpy求和

时间:2015-03-17 01:26:13

标签: python arrays numpy boolean-logic

在Numpy中,我有一个矩阵长度相等的布尔数组。我想对与布尔数组对应的矩阵元素进行计算。我该怎么做?

a: [true, false, true]
b: [[1,1,1],[2,2,2],[3,3,3]]

假设该函数是对子数组的元素求和

索引0是True:因此我在求和中加3(从零开始)

索引1为False:因此总和保持为3

索引2是True:因此我在总和中加9为总计12

我该怎么做(布尔和求和部分;我不需要如何将每个子数组相加)?

1 个答案:

答案 0 :(得分:2)

您可以简单地使用布尔数组a来索引b的行,然后获取生成的(2, 3)数组的总和:

import numpy as np

a = np.array([True, False, True])
b = np.array([[1,1,1],[2,2,2],[3,3,3]])

# index rows of b where a is True (i.e. the first and third row of b)
print(b[a])
# [[1 1 1]
#  [3 3 3]]

# take the sum over all elements in these rows
print(b[a].sum())
# 12

听起来你会从阅读the numpy documentation on array indexing中受益。