Есть ли эффективный способ перебазировать большой массив в Python? - PullRequest
0 голосов
/ 02 мая 2018

Фон: у меня есть большие выборки с гистограммой отсчетов для разных частотных бинов. Частотные интервалы для разных выборок не идентичны, но находятся в аналогичном диапазоне стандартного значения. Вот пример:

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]

Может кто-нибудь подсказать, как исправить последний шаг? Я также приветствовал бы любые другие эффективные решения.

...