将NumPy矩阵复制到NumPy数组中

时间:2017-05-18 09:29:30

标签: python numpy

我正在使用cvxpy来解决优化问题。我想将输出matrix存储到ndarray

这是简化的测试用例。 a表示cvxpy的返回值。

import numpy as np

z = np.zeros((3,7))
a = np.matrix("[1; 2; 3]")
z[0, 0] = a[0]
z[1, 0] = a[1]
z[2, 0] = a[2]

我想用更好的东西替换最后三行,但我尝试的所有内容都会导致错误。如,

>>> z[:, 0] = a
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: could not broadcast input array from shape (3,1) into shape (3)
>>> np.copyto(z[:, 0], a)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: could not broadcast input array from shape (3,1) into shape (3)

我会感激一点帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

一种简单的方法是使用列索引列表来索引z,然后简单地在那里分配NumPy矩阵a -

z[:,[0]] = a

另一种方法是使用矩阵a的转置,这将是一个行向量,可以分配到z中第一列的切片版本 -

z[:,0] = a.T