将矢量存储在numpy矩阵的单元格中

时间:2013-12-25 17:56:30

标签: python numpy

我试图将一个向量存储在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.

我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

dtype的{​​{1}}更改为matnumpy.object返回的数组的默认dtypenumpy.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)。