布尔数组中索引的 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
我该怎么做(布尔和求和部分;我不需要如何将每个单独的子数组相加)?
您可以简单地使用布尔数组 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。
在 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
我该怎么做(布尔和求和部分;我不需要如何将每个单独的子数组相加)?
您可以简单地使用布尔数组 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。