在NumPy中广播较少的过滤

2024-03-19 09:56:24 发布

您现在位置:Python中文网/ 问答频道 /正文

给定两个数组ab

import numpy as np
a = np.arange(10, dtype=float)    
b = np.arange(0, 10, 2, dtype=float)

我想返回一个与b形状相同的数组c,其中{}中的每个元素等于a的平均值,条件是a小于{}的相应元素。这是一个嘴,更容易表达为:

^{2}$

但是有什么办法可以避免列表压缩吗?只使用b而不是i会抛出一个ValueError,因为这两个不能被广播。在

注意:正如我现在所说,a不(必须)排序。在


Tags: importnumpy元素列表asnp数组float
1条回答
网友
1楼 · 发布于 2024-03-19 09:56:24

为了考虑^{},我们需要为其中一个输入数组添加一个新的轴。{1>在这里添加一个

mask = (a[:,None] <= b)
c = a.dot(mask)/mask.sum(0)

基本上,a.dot(mask)得到了求和,我们将其除以有效元素的个数,用mask.sum(0)求出平均值。在

相关问题 更多 >