Python - 初始化随机设置的不同长度向量

时间:2017-04-11 16:09:40

标签: python arrays numpy random

我正在尝试随机初始化一个向量列表(或一维数组)。矢量并不总是具有相同的长度。

我重现了一个我的问题的一个小例子:

import numpy

l_vec = [5, 6, 4]
n_vec = len(l_vec)
w = numpy.array((n_vec,)).astype(object)

for i in range(len(l_vec)):
    w[i] = numpy.random.rand(l_vec[i])
    print i, w[i]

如果你运行它,你会看到w[0],没有问题:

0 [ 0.10584519  0.90833169  0.94235319  0.34320398  0.71796362]

但是,我有下一个错误(i=1时):

IndexError: index 1 is out of bounds for axis 0 with size 1 

如何更正我的代码以便能够随机初始化我的(不同长度)向量集?

如果你能告诉我这段代码有什么问题,我也很感激。

1 个答案:

答案 0 :(得分:0)

w=np.array(...)替换为w=np.empty(...)

import numpy

l_vec = [5, 6, 4]
n_vec = len(l_vec)
w = numpy.empty((n_vec,)).astype(object)

for i in range(len(l_vec)):
    w[i] = numpy.random.rand(l_vec[i])
    print(i, w[i])

查看np.arraynp.empty的文档。