我有一个形状为(3, m)的数组。
我还有一个形状为(n, 3)的掩码数组。这个掩码数组的行是布尔过滤器,需要在对数据数组执行某些函数之前应用。是否存在一种向量化的方式来应用筛选器并计算函数?
以下是一个使用循环的示例,假设函数是mean()。我想纯粹使用Numpy进行此操作(不使用列表推导)。
(显然,实际上数组的大小要大得多。)
我还有一个形状为(n, 3)的掩码数组。这个掩码数组的行是布尔过滤器,需要在对数据数组执行某些函数之前应用。是否存在一种向量化的方式来应用筛选器并计算函数?
以下是一个使用循环的示例,假设函数是mean()。我想纯粹使用Numpy进行此操作(不使用列表推导)。
(显然,实际上数组的大小要大得多。)
import numpy as np
data = np.array([
[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]
])
masks = np.array([
[True, True, False],
[False, True, False],
[False, True, True],
[True, False, False],
[True, False, True]
])
means = np.array([data[mask].mean(axis=0) for mask in masks])
# means
array([[ 2., 3., 4., 5.],
[ 4., 5., 6., 7.],
[ 6., 7., 8., 9.],
[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.]])