Как выполнить нецелочисленное среднее объединение в массив 1d numpy? - PullRequest
0 голосов
/ 21 марта 2020

Предположим, у меня есть массив 1d Numpy размером n. Как я могу выполнить средний пул, чтобы изменить размер массива до размера m, где коэффициент R = n / m не является целым числом. Это было бы эквивалентно разделению массива на нецелые ячейки и вычислению среднего значения для каждой ячейки. Фрагмент кода показывает функциональность, которую я ищу, он вычисляет среднее значение для каждого бина, а также принимает во внимание элементы массива, которые только в бинарном порядке.

result = []

bins = np.linspace(0, len(array), m+1)
for i, j in zip(bins[:-1], bins[1:]):
    i_ceil = int(np.ceil(i))
    i_diff = i_ceil - i

    j_floor = int(np.floor(j))
    j_diff = j - j_floor

    numerator = np.sum(array[i_ceil:j_floor]) + array[max(0, i_ceil-1)] * i_diff + array[min(len(array)-1, j_floor)] * j_diff

    result.append(numerator / (j-i))

assert np.mean(np.array(result)) == np.mean(array)
return np.array(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...