布尔数组中索引的 Numpy 求和

Numpy Summation for Index in Boolean Array

在 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

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

您可以简单地使用布尔数组 ab 的行进行索引,然后对结果 (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