gpt4 book ai didi

python - 如何使用 bool 行的二维数组来过滤另一个二维数组?

转载 作者:太空宇宙 更新时间:2023-11-03 12:03:37 26 4
gpt4 key购买 nike

我在 (3, m) 数组中有一些数据。

我有另一个 (n, 3) 形状的掩码数组。此掩码的行是 bool 过滤器,需要在执行某些功能之前应用于数据数组。是否有矢量化方法来应用过滤器和计算函数?

为了清楚起见,这里有一个使用循环的示例,假设函数是 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.]])

最佳答案

这个问题很容易通过 matrix-multiplication 使用 np.dot 解决因此必须非常有效。这是实现-

np.true_divide(masks.dot(data),masks.sum(1)[:,None])

关于python - 如何使用 bool 行的二维数组来过滤另一个二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39564421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com