簡體   English   中英

使用 Python 創建二維高斯分布

[英]Creating 2-D Gaussian Distributions With Python

我正在嘗試根據下圖中的問題創建二維高斯分布。 我正在使用 numpy 的multivariate_normal()

mu1 = [2,0]
cov1 = [[1,0],[0,1]]
gauss1 = np.random.multivariate_normal(mu1, cov1, 1000)
print(gauss1[:5])
[[ 2.31429248 -0.66406452]
[ 0.26891266 -0.6157051 ]
[ 1.93124527 -1.33371758]
[ 3.55936363  0.84616475]
[ 2.70321679 -1.43942645]]

這是執行此操作的正確方法,還是我遺漏了什么?

問題:創建二維高斯分布

正如 Nin17 在評論中所述,您應該更新為使用default_rng ,否則您就很好。 這是一個包含所有三個高斯對的實現,寫入sys.stdout (因為我不喜歡將文件名硬連線到代碼中,並且可以在運行時重定向 stdout)。

import numpy as np
from numpy.random import default_rng
import sys


my_rng = default_rng()

means = [
  [2, 0],
  [-5, 5],
  [-3, 3]
]

covs = [
  [[1, 0], [0,1]],
  [[4, 0], [0,4]],
  [[9, 0], [0,9]]
]

results = []

for i in range(len(means)):
    results.append(my_rng.multivariate_normal(means[i], covs[i], 1_000))

print('x1,y1,x2,y2,x3,y3')
np.savetxt(sys.stdout, np.concatenate(results, axis = 1)[:5], delimiter=',', fmt="%f")

我選擇連接結果並寫入 CSV 數據,這樣我就可以導入單獨的統計數據 package。修改代碼以打印完整的 1000 個結果而不僅僅是前 5 組值后,結果是與目標一致的高斯曲線均值和標准差。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM