如何向numpy.random.randn传入1维维度数组生成正态分布张量
你写的代码报错是因为np.random.randn要求传入多个独立的整数位置参数分别对应每个维度的长度,不支持直接传入存储维度的数组作为单个参数。
方案1:参数解包(兼容旧版本numpy)
在数组前加*对维度数组做位置参数解包即可:
import numpy as np dims = np.array((1,2,3,4)) A = np.random.randn(*dims) # 也可以先转成元组更稳妥,避免部分旧版本numpy的兼容问题 # A = np.random.randn(*tuple(dims))
解包操作会把dims里的元素拆成独立的参数传入randn,和你直接写randn(1,2,3,4)效果完全一致,适配n为任意值的场景。
方案2:使用新版numpy随机生成器(更推荐)
numpy目前更推荐使用新的随机数生成器接口,它的size参数原生支持直接传入维度数组/元组,不需要解包:
import numpy as np dims = np.array((1,2,3,4)) rng = np.random.default_rng() A = rng.normal(size=dims)
这个接口生成的随机数统计特性更优,代码可读性也更高。
内容的提问来源于stack exchange,提问作者user5965026
相关产品推荐
相关产品推荐

