1

让我暴露我的问题:

我用 Python 和 Numpy 编写了一个软件,它产生了两个名为 X 和 Y 的 numpy 数组。

该值与函数相关:Y = f(X)

X 值属于区间 [0;1]。

numpy.histogram 允许在此间隔内将 X 值合并到预定义的等距 bin 中。

我想做的是在不执行“for”循环的情况下对每个 bin 对应的 Y 值求和。

非常感谢您的回答。

4

1 回答 1

2

假设您的 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)
于 2014-05-11T15:28:52.810 回答