python - 如何将一维维度数组输入 numpy.random.randn?
问题描述
假设我有一个一维数组dims
:
dims = np.array((1,2,3,4))
我想创建一个 n 阶正态分布张量,其中 n 是 的大小,dims
并且dims[i]
是第 i 维的大小。
我试着做
A = np.random.randn(dims)
但这不起作用。我可以
A = np.random.randn(1,2,3,4)
这会起作用,但n
可能很大并且n
本身可能是随机的。在这种情况下,如何读取尺寸大小的数组?
解决方案
当签名为时,解包是标准 Pythonrandn(d0, d1, ..., dn)
In [174]: A = np.random.randn(*dims)
In [175]: A.shape
Out[175]: (1, 2, 3, 4)
randn
docs 建议standard_normal
使用元组(或可以视为元组的数组):
In [176]: B = np.random.standard_normal(dims)
In [177]: B.shape
Out[177]: (1, 2, 3, 4)
事实上,文档说新代码应该使用这个:
In [180]: rgn = np.random.default_rng()
In [181]: rgn.randn
Traceback (most recent call last):
File "<ipython-input-181-b8e8c46209d0>", line 1, in <module>
rgn.randn
AttributeError: 'numpy.random._generator.Generator' object has no attribute 'randn'
In [182]: rgn.standard_normal(dims).shape
Out[182]: (1, 2, 3, 4)
推荐阅读
- javascript - IE浏览器是否有任何动作迫使他们将其从现实世界中完全拆除?
- angular - 子组件 ngOnChanges 中的 Demo 变量不起作用
- c# - NHibernate 在 Web 服务中会自动清除 NHibernate 二级缓存
- react-native - 如何在本机反应中在聊天机器人上创建动态步骤
- javascript - 将模式滚动到顶部时遇到问题
- java - 在一行中显示 2 个或多个文本视图
- aem - 如何在 AEM 的 Teaser 组件中为图像添加 Alt 标签?
- reactjs - 是否可以使用三个 JS 将图像粘贴到 GLB 文件上?
- azure - Azure API 管理缓存策略
- sql - 创建一个函数以返回具有日期范围的可用教师