gpt4 book ai didi

python - 在 NumPy 中广播小于过滤

转载 作者:行者123 更新时间:2023-11-30 22:30:36 26 4
gpt4 key购买 nike

给定两个数组ab:

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

我想返回一个与 b 形状相同的数组 c,其中 c 中的每个元素等于a,条件是a小于b对应的元素。这很拗口,更容易表达为:

c = np.array([a[a <= i].mean() for i in b])

但是有什么办法可以避免这里的列表理解吗?仅使用 b 而不是 i 会引发 ValueError,因为两者无法广播。

注意:因为我现在有东西,a 没有(必然)排序。

最佳答案

允许broadcasting ,我们需要为输入数组之一添加一个新轴。添加 a,这是一个解决方案 -

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

基本上,a.dot(mask) 获取总和,然后将其除以有效元素的数量,通过 mask.sum(0) 找到得到相当于平均的结果。

关于python - 在 NumPy 中广播小于过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45984899/

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