我试图将一个向量存储在numpy矩阵的单元格中。
mat=n.zeros((5,5))
vec=n.zeros(5)
mat[0][0]=vec
它抛出了这个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: setting an array element with a sequence.
我在这里做错了什么?
答案 0 :(得分:2)
将dtype
的{{1}}更改为mat
。 numpy.object
返回的数组的默认dtype
为numpy.zeros
,因此您无法将float
类型的项目设置为其任何元素。
ndarray
答案 1 :(得分:0)
将矩阵mat
更改为第三维,尺寸为向量vec
的长度:
mat=n.zeros((5,5,5))
mat
的不同页面对应于每个向量的不同组成部分:向量的第 i 个组成部分存储在第 i 个页面中。 / p>
很显然,您将不再需要分别初始化向量或将向量分配给矩阵单元,因此可以删除以下行:
vec=n.zeros(5)
mat[0][0]=vec
您可以使用与以前相同的方式访问每个矢量,例如使用mat[3,4]
获取第3行第4列中的向量。这是因为,在NumPy中,mat[3,4]
等效于mat[3,4,...]
,在这种情况下,它等效于mat[3,4,:]
,它将获取 all < / em>页,即第三行和第四列中的向量(请参见https://docs.scipy.org/doc/numpy-1.15.0/user/basics.indexing.html)。