让我揭露我的问题:
我用 Python 和 Numpy 编写了一个软件,它生成两个名为 X 和 Y 的 numpy 数组。
这些值作为函数相关:Y = f(X)
X 值属于区间 [0;1]。
numpy.histogram 允许在此间隔内将 X 值分箱到预定义的等间隔箱中。
我想做的是对每个 bin 对应的 Y 值求和,而不执行“for”循环。
非常感谢您的回答。
最佳答案
假设您的 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)
关于python - Python 中函数的分箱值 (numpy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23594262/