让我暴露我的问题:
我用 Python 和 Numpy 编写了一个软件,它产生了两个名为 X 和 Y 的 numpy 数组。
该值与函数相关:Y = f(X)
X 值属于区间 [0;1]。
numpy.histogram 允许在此间隔内将 X 值合并到预定义的等距 bin 中。
我想做的是在不执行“for”循环的情况下对每个 bin 对应的 Y 值求和。
非常感谢您的回答。
假设您的 y 值在相应的位置,即,y[i] = f(x[i])
您可以使用numpy.digitize
找到 x 值所属的 bin 的索引,并使用这些索引来总结相应的 y 值。
从numpy
示例中(忽略值不在 内[0; 1]
):
>>> x = np.array([0.2, 6.4, 3.0, 1.6])
>>> bins = np.array([0.0, 1.0, 2.5, 4.0, 10.0])
>>> inds = np.digitize(x, bins)
>>> inds
array([1, 4, 3, 2])
然后总结 y 中的值:
>>> aggregate = [y[inds == i].sum() for i in np.unique(inds)]
如果您正在为自己创建垃圾箱而苦苦挣扎,请查看numpy.linspace
.
numpy.linspace(0, 1, num=50, endpoint=True)