Python-随机初始化一组不同长度的向量
我试图随机初始化一个向量列表(或1D数组)。向量并不总是具有相同的长度 我重现了我的问题的一个小例子:Python-随机初始化一组不同长度的向量,python,arrays,numpy,random,Python,Arrays,Numpy,Random,我试图随机初始化一个向量列表(或1D数组)。向量并不总是具有相同的长度 我重现了我的问题的一个小例子: 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],没有
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
)我有此错误:
索引器错误:索引1超出大小为1的轴0的界限
如何更正代码以随机初始化(不同长度)向量集
如果您能告诉我这段代码有什么问题,我也会很感激。将w=np.array(…)
替换为w=np.empty(…)
查看np.array
和np.empty
的文档,将w=np.array(…)
替换为w=np.empty(…)
查看
np.array
和np.empty
的文档,因为w
的长度为1。另一方面,如果要使用对象
样式,那么最好使用普通列表而不是numpy数组。第一个参数不是数组的大小。w=numpy.zero(n_-vec,dtype=object)
是创建大小为(n_-vec,)的对象数据类型数组的正确方法。。。。或者numpy.empty(n\u nvec,dtype=object)
如果以后要填写所有值。np.empty
使用object dtype将所有值初始化为None
。我无法想象它能节省任何时间。因为w
的长度为1。另一方面,如果要使用对象
样式,那么最好使用普通列表而不是numpy数组。第一个参数不是数组的大小。w=numpy.zero(n_-vec,dtype=object)
是创建大小为(n_-vec,)的对象数据类型数组的正确方法。。。。或者numpy.empty(n\u nvec,dtype=object)
如果以后要填写所有值。np.empty
使用object dtype将所有值初始化为None
。我无法想象它能节省任何时间。非常感谢。我将查看文档,因为我从未见过np.empty()。我将查看文档,因为我从未见过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])