我正在嘗試將數組“bin”到 bin 中(類似于直方圖)。我有一個輸入數組input_array和一個范圍bins = np.linspace(-200, 200, 200)。整體功能如下所示:def bin(arr): bins = np.linspace(-100, 100, 200) return np.histogram(arr, bins=bins)[0]所以,bin([64, 19, 120, 55, 56, 108, 16, 84, 120, 44, 104, 79, 116, 31, 44, 12, 35, 68])會返回:array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0])但是,當我接近 0 時,我希望我的 bin 更加“詳細”……類似于 indeal 正態分布。結果,當我接近 0 時,我可以有更多的 bin(即短距離),并且當我向范圍外移動時,bin 會更大。是否可以?更具體地說,不是在一個范圍內有同樣寬的垃圾箱,我可以有一個范圍數組,其中向中心的垃圾箱比靠近極端的垃圾箱小嗎?我已經看過類似的回答這個和numpy.random.normal,但東西是不正確的點擊。
1 回答

ibeautiful
TA貢獻1993條經驗 獲得超6個贊
使用逆誤差函數生成 bin。您需要縮放垃圾箱以獲得所需的確切范圍
此變換有效,因為反誤差函數在零附近比在 +/- 1 附近更平坦。
from scipy.special import erfinv
erfinv(np.linspace(-1,1))
# returns:
array([ -inf, -1.14541135, -0.8853822 , -0.70933273, -0.56893556,
-0.44805114, -0.3390617 , -0.23761485, -0.14085661, -0.0466774 ,
0.0466774 , 0.14085661, 0.23761485, 0.3390617 , 0.44805114,
0.56893556, 0.70933273, 0.8853822 , 1.14541135, inf])
添加回答
舉報
0/150
提交
取消