#python #numpy #histogram
Вопрос:
У меня есть два массива: один для местоположений частиц X
и один для соответствующих скоростей V
. Я хочу создать гистограмму для местоположений частиц, где ширина каждой ячейки равна 1, и для каждой ячейки я хочу рассчитать дисперсию связанных скоростей частиц в этой конкретной ячейке.
Создание гистограммы местоположения просто:
import numpy as np
import matplotlib.pyplot as plt
X = np.random.randn(1000)
V = 3*np.random.randn(1000) 40
bins = np.arange(int(X.min()) - 0.5, int(X.max()) 1.5, 1)
plt.hist(X, bins=bins, facecolor = '#2ab0ff', edgecolor='#169acf', linewidth=0.7)
Тем не менее, я хочу рассчитать дисперсию скоростей для частиц в каждой ячейке в соответствии с V
вектором (если в ячейке 3 частицы с центром в -3, я хочу рассчитать дисперсию 3 значений скорости).
Я не уверен, как это сделать эффективно, поскольку нет отслеживания отображения из X
вектора в гистограмму.
Есть идеи о том, как подойти к этой проблеме?
Спасибо!
Ответ №1:
Возможно, вы захотите использовать функцию scipy.stats.binned_statistics .
Вот пример.
import numpy as np
from scipy.stats import binned_statistic
import matplotlib.pyplot as plt
X = np.random.randn(1000)
V = 3*np.random.randn(1000) 40
hist, bins, stst = binned_statistic(X, V, statistic='std')
bin_centres = (bins[1:] bins[:-1]) / 2
plt.plot(bin_centres, hist)
plt.show()