【发布时间】:2017-09-07 03:32:56
【问题描述】:
我正在尝试随机初始化一个向量列表(或一维数组)。向量并不总是具有相同的长度。
我重现了我的问题的一个小例子:
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
如何更正我的代码以便能够随机初始化我的一组(不同长度)向量?
如果您能告诉我这段代码有什么问题,我也将不胜感激。
【问题讨论】:
-
因为
w的长度为 1。顺便说一句,如果您打算使用object样式,您不妨使用普通列表而不是 numpy 数组。 -
再看看docstring for
numpy.array。第一个参数不是数组的大小。 -
w = numpy.zeros(n_vec, dtype=object)是制作大小为 (n_vec,) 的对象 dtype 数组的正确方法。 -
... 或
numpy.empty(n_nvec, dtype=object)如果您要稍后填写所有值。 -
np.emptywith object dtype 将所有值初始化为None。我无法想象它可以节省任何时间。
标签: python arrays numpy random