根据它们的总和沿轴合并Numpy数组值

时间:2018-10-08 12:56:46

标签: python arrays numpy

假设我有一个巨大的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])

根据答案herehere,但结果也与我想要的内容大致相关。有一种更简单的方法可以表达出来吗?

0 个答案:

没有答案