任意复杂的指定形状的numpy随机数

时间:2015-01-29 06:38:49

标签: python numpy random numbers shape

def shaperand(s):
    r = []
    for i in s:
        if type(i) in [list,tuple]:
            r.append(shaperand(i))
        else:
            r.append(np.random.rand())
    return r

所以,

shaperand([[1,2],[3,4,5],[6,7]])

结果:

[[0.27611814857329864, 0.6271028191307862], [0.6245245446787084, 0.743259931401167, 0.9061663248784034], [0.7236900927531255, 0.540622773908648]]

我没有看到执行此操作的功能。如果有一个它会更快。写这个有更好,更好的方式吗?

1 个答案:

答案 0 :(得分:1)

如果您正在使用NumPy数组,那很简单:

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
np.random.random(a.shape)

如果您有列表,可以这样做:

import random

def shaperand(s):
    return [shaperand(e) if isinstance(e, list) else random.random() for e in s]