[英]Sampling from two Gaussian distributions with different probability in Python
我試圖從 2 個不同的高斯分布中生成 100 個樣本,這樣 G1 出現的概率為 0.7,G2 出現的概率為 0.3。 我有以下代碼片段:
from scipy.stats import norm
import numpy as np
x = [norm.rvs(0, 1, size=5), norm.rvs(10, 1, 5)]
draw = np.random.choice([0, 1], 100, p=[0.7, 0.3])
y = [x[i].rvs() for i in draw]
z = np.array(y)
當我編譯這個時,我收到以下錯誤:
AttributeError: 'numpy.ndarray' object has no attribute 'rvs'
有什么我想念的嗎? 或者,是否存在根本性缺陷?
在這一行
x = [norm.rvs(0, 1, size=5), norm.rvs(10, 1, 5)]
您正在創建兩個隨機值數組。 所以在這一行
[x[i].rvs() for i in draw]
您不能使用它們來創建更多隨機值( .rvs
),因為您有 numpy 數組:
norm.rvs(0, 1, size=5)
# Out: array([-1.61758314, 1.19288111, -0.55599284, -0.17926848, -0.78759 ])
我想你想創建一個正態分布對象的列表,然后你用它來從中抽取隨機值:
x = [norm(0, 1), norm(10, 1)]
draw = np.random.choice([0, 1], 100, p=[0.7, 0.3])
y = [x[i].rvs() for i in draw]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.