我使用numpy
reduceat
方法对数据进行分箱。背景:我正在处理以高频采样的测量数据,我需要通过从一定大小的bin中提取bin均值来对它们进行下采样。因为我有上百万的样本,我需要一些快的东西。原则上,这就像一种魅力:
import numpy as np
def bin_by_npreduceat(v, nbins):
bins = np.linspace(0, len(v), nbins+1, True).astype(np.int)
return np.add.reduceat(v, bins[:-1]) / np.diff(bins)
问题是:NaN可能会发生(很少,但会发生)。后果:整个bin将是NaN,因为我使用np.add
:
v = np.array([1,np.nan,3,4,5,4,3,5,6,7,3,2,5,6,9])
bin_by_npreduceat(v, 3)
Out[110]: array([nan, 5., 5.])
有谁知道我该怎么补救吗?np.nansum
没有reduceat
1条答案
按热度按时间monwx1rj1#
我们可以使用基于
masking
的方法-