为了账号安全,请及时绑定邮箱和手机立即绑定

numpy repeat 和这种方法的区别

numpy repeat 和这种方法的区别

婷婷同学_ 2021-06-10 10:01:52
我想生成一个随机样本大小为 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 npn_pop = 1800obs_size = 90sub_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))我的方法对吗?
查看完整描述

2 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

不完全确定您要做什么,但不是

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)


查看完整回答
反对 回复 2021-06-22
  • 2 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号