numpy repeat 和这种方法的区别

我想生成一个随机样本大小为 90 (10+30+50),创建一个包含这 90 个随机生成的样本的列表并找到样本中位数。这是我得到的:


sub_pop = [300, 500, 1000]

samplesize = [10, 30, 50]

std_list = [40, 50, 60]

mean_list = [50, 60, 70]

换句话说,我想从 sub_pop 300 中随机生成 10 个子样本大小,从 sub_pop 500 中随机生成 30 个子样本大小,从 sub_pop 1000 中随机生成 50 个子样本大小,然后将结果附加到单个列表中。每个 sub_pop 正态分布如下:sub_pop 300 是正态分布 wif std dev 40 和平均值 50,sub_pop 500 是正态分布 wif std dev 50 和平均值 60 等等。


这是我到目前为止所做的:


import numpy as np

n_pop = 1800

obs_size = 90

sub_pop = [300, 500, 1000]

samplesize = [10, 30, 50]

std_list = [40, 50, 60]

mean_list = [50, 60, 70]


list = []

for i in range(300):

    list += np.random.normal(loc = 50, scale = 40, size = 10).tolist()


for i in range(500):

    list += np.random.normal(loc = 60, scale = 50, size = 30).tolist()


for i in range(1000):

    list += np.random.normal(loc = 70, scale = 60, size = 50).tolist()


list1 = [abs(x) for x in list]

print(list1)

print(np.median(list1))

我的方法对吗?


婷婷同学_
浏览 173回答 2
2回答

慕妹3146593

不完全确定您要做什么,但不是for i in range(1000):     list += np.random.normal(loc = 70, scale = 60, size = 50).tolist()你可以用x = np.random.normal(loc = 70, scale = 60, size = (50, 1000))那么绝对就是x_abs = np.abs(x)为了正确使用中位数,请使用关键字axis来指定要操作的维度。也许np.median(x_abs, axis=1)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python