Допустим, у меня есть огромный двумерный массив, схематично выглядящий так:
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])
в соответствии с ответами здесь и здесь , но результат также просто слабо связан счто я хочу.Есть ли более простой способ сформулировать это?