问题的答案确实不是一个单一的答案,而是可以用作构建基块的几种技术。您可能会发现另一个有用的方法:
所有的numpy
ufuncs都有一个
.reduceat方法,您可以利用它来进行一些计算:
>>> a = np.arange(100)>>> breaks = np.linspace(0, 100, 11, dtype=np.intp)>>> counts = np.diff(breaks)>>> countsarray([10, 10, 10, 10, 10, 10, 10, 10, 10, 10])>>> sums = np.add.reduceat(a, breaks[:-1], dtype=np.float)>>> sumsarray([ 45., 145., 245., 345., 445., 545., 645., 745., 845., 945.])>>> sums / counts # i.e. the meanarray([ 4.5, 14.5, 24.5, 34.5, 44.5, 54.5, 64.5, 74.5, 84.5, 94.5])
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)