假设我有一个巨大的2D数组,看起来像这样:
test = np.array([[0.1, 0.3, 0.5, 0.2, 5., np.nan, np.nan],
[2., 0.8, 0.1, 3., 2.5, 0.9, np.nan]])
由于它很大,所以我想沿一个轴合并条目,但它们的总和至少应大于某个值,在这种情况下为1。合并后的条目应采用合并后的条目组中的最低索引,其余的应填充NaN:
np.array([[1.1, 5., np.nan, np.nan, np.nan, np.nan, np.nan],
[2.9, 3., 3.4, np.nan, np.nan, np.nan, np.nan]])
我知道可以通过遍历数组的一个维度,将索引分配给列表,进行阈值化,合并然后填充来以某种方式实现,但这对我来说似乎相当复杂。我还尝试将np.apply_along_axis
与类似的东西一起使用:
digi = np.digitize(test[0], np.arange(0, np.nanmax(test[0]), 0.05), right=True)
np.bincount(digi, weights=test[0])