Значения каждой корзины - PullRequest
0 голосов
/ 22 февраля 2019

У меня возникла следующая проблема:

hist, edges = np.histogram(data, bins=50)

Как я могу получить доступ к значениям каждого бина?Я хотел вычислить среднее значение для каждой корзины.

Спасибо

1 Ответ

0 голосов
/ 22 февраля 2019

Я думаю, что эта функция делает то, что вы хотите:

import numpy as np

def binned_mean(values, edges):
    values = np.asarray(values)
    # Classify values into bins
    dig = np.digitize(values, edges)
    # Mask values out of bins
    m = (dig > 0) & (dig < len(edges))
    values = values[m]
    dig = dig[m] - 1
    # Binned sum of values
    nbins = len(edges) - 1
    s = np.zeros(nbins, dtype=values.dtype)
    np.add.at(s, dig, values)
    # Binned count of values
    count = np.zeros(nbins, dtype=np.int32)
    np.add.at(count, dig, 1)
    # Means
    return s / count.clip(min=1)

Пример:

print(binned_mean([1.2, 1.8, 2.1, 2.4, 2.7], [1, 2, 3]))
# [1.5 2.4]

Однако есть небольшая разница с гистограммой в этой функции, как считает np.digitizeвсе ячейки полузакрыты (правые или левые), в отличие от np.histogram, в котором последний край считается закрытым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...