我有兩個陣列:一個用于粒子位置X,另一個用于相應的 velocities V。我想為粒子位置創建一個直方圖,其中每個 bin 寬度為 1,并且對于每個 bin,我想計算該特定 bin 中粒子的相關速度的方差。
做位置直方圖很簡單:
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向量計算每個 bin 中粒子的速度方差(如果bin 中有 3 個粒子以 -3 為中心,我想計算 3 個速度值的方差)。我不確定如何有效地做到這一點,因為沒有跟蹤從X向量到直方圖的映射。
關于如何解決這個問題的任何想法?
謝謝!
uj5u.com熱心網友回復:
您可能想要使用函式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()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/355855.html
下一篇:mysql-day02筆記
