如何解决使用 Python,生成 100 X 100 随机矩阵,其条目从正态分布中采样
使用 numpy.random 生成随机向量。用 Python 编写代码,生成一个 100 X 100 随机矩阵,其条目是来自正态分布的样本。
这是我制作的,不确定这是否正确。我也有一个关于正态分布的问题。我的随机数应该来自某个池吗?如 $[0,1]$ 或者是否有可能获得超出此范围的值?
这是在 Jupyter Notebook 中编写的代码:
import numpy as np
a = np.random.randn(100,100)
a
array([[-0.42952803,-0.55136761,-0.45544016,...,-0.54125441,2.31481612,0.93721055],[-0.2440975,-0.10233273,-0.06972217,-0.25760561,0.48431004,-0.91599734],[-1.39176645,-0.79784139,-0.21914249,2.38224209,1.57696294,0.48747715],[ 0.38458431,-1.75968742,1.64696889,1.43273609,-0.74896945,0.48588267],[ 1.22934075,1.27112809,-0.40593726,0.63584471,0.11152366,-2.23030795],[ 1.5910005,0.29184142,-0.01811951,-0.25800051,-0.09681777,0.40182752]])
解决方法
你的做法是正确的,但有几点需要注意。
首先,np.random.randn()
专门用于从标准正态分布(均值为 0 和标准差为 1 的分布)中绘制。根据您的问题,这听起来像是您想要的,但请注意,您也可以使用 np.random.normal(mu,sd,size=(100,100))
,其中 mu
是您要从中采样的正态分布的平均值,而 sd
是标准差。
关于您关于值应该在什么范围内的问题,它们肯定不限于 [0,1]
。正态分布是定义在所有实数上的连续概率密度函数,因此理论上您可以看到任何实数,尽管随着远离均值,观察到每个值的概率会降低。
有关一般正态分布的更多信息,我建议阅读 Wolfram 的 this page。
,我认为您正在做的事情会起作用,但是,numpy
文档建议您使用 numpy.random.standard_normal
有关 numpy.random.randn
文档的更多详细信息,请参阅 the note。
所以这看起来像...
import numpy as np
mat = np.random.standard_normal(size=(100,100))
mat.size()
产生
array([[ 0.19635784,0.19134202,-0.90622914,...,-0.1487657,0.210058,-0.06616276],[ 0.37758747,-1.96359795,-0.1302543,0.27463501,0.5956493,0.95462422],[-0.06986621,1.6122695,-0.91379974,0.94488747,-0.05906328,-1.09491503],[ 0.04273415,-0.7566953,0.34079966,-0.2154078,-1.42879529,-0.7601603 ],[ 0.87875502,-0.18143793,-0.97638314,0.19633813,1.19428871,-1.9585137 ],[ 0.75305984,0.26421749,-1.06839234,-1.10464615,-0.25891926,1.2184856 ]])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。