让我揭露我的问题:
我用Python和Numpy编写了一个软件,它生成了两个名为X和Y的numpy数组。
此值与函数相关:Y = f(X)
X值属于区间[0; 1]。
numpy.histogram允许在此间隔中对预定义的等间距分箱中的X值进行分箱。
我想要做的是在不进行“for”循环的情况下对每个bin对应的Y值求和。
非常感谢您的回答。
答案 0 :(得分: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)