创建一个行为类似于"np.random.randn"的函数



我正在尝试在不使用numpy库的情况下重新创建用于娱乐np.random.randn()

函数np.random.randn()可以接受任意数量的参数,指定每个维度的长度。例如,np.random.randn(2, 3, 4)创建一个 2 * 3 * 4 矩阵,其中每个条目都是标准正态分布。

我已经完成了以下内容,但无法分配每个条目值(用#####...括起来的行)

import random
from itertools import product
def getStandardNormalTensor(*dimList):
# create empty list
lst = 0
for dim in dimList: lst = [lst] * dim
# populate list with N(0, 1) number
for idx in product(*[list(range(dim)) for dim in dimList]):
#######################################
lst[idx] = random.gauss(0, 1)
#######################################

return lst

显然lst不接受像lst[(1, 2, 3)]那样的索引,而只接受lst[1][2][3].

我现在遇到的困难是我无法使索引工作,因为我不知道dimList中有多少个维度(即dimList的长度)。

有人可以帮助我吗?提前谢谢你!

您可以尝试构建正确长度的平面列表,然后将其转换为嵌套列表。不过,不知道如何从我的头顶上重现 numpy 的重塑。

最新更新