Есть ли эффективный способ перебазировать большой массив в Python?
Фон: у меня есть большие выборки с гистограммой отсчетов для разных частотных бинов. Частотные интервалы для разных выборок не идентичны, но находятся в аналогичном диапазоне стандартного значения. Вот пример:
import numpy as np
frequency_standard = np.array([1, 3, 5, 7])
У меня есть гигантская коллекция частотных отсчетов и соответствующих количественных отсчетов в разных двухмерных местах. пример цели:
frequency_of_samples = np.array([[1, 2, 3, 4],[1.4,3.5, 4.6, 5.8],
[2, 3.5, 5.6, 6.8]])
data_of_samples = np.array([[10, 14, 52, 12], [12, 32, 53, 21],
[23, 54, 26, 13]])
Теперь я хотел бы ребин data_of_samples
в frequency_standard
, вместо frequency_of_samples
, Я хотел бы иметь быстрый метод numpy, который достиг бы этого. Мое начало следующее: сначала найдите индекс frequency_of_samples
в frequency_standard
:
bin_index = np.digitize(frequency_of_samples, frequency_standard)
На данный момент мне нужно иметь чистый массив для выгрузки числа:
binned_data = np.zeros(data_of_samples.shape)
И кумулятивно добавить число из data_of_samples
в bin_index
в binned_data
, Эта часть не работает, и следующий код не имеет никакого смысла, но я хотел бы иметь что-то вроде этого:
binned_data[bin_index] += data_of_samples[bin_index]
Кто-нибудь может подсказать, как исправить последний шаг? Я также приветствовал бы любые другие эффективные решения.