我正在使用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)
我会感激一点帮助。谢谢。
答案 0 :(得分:1)
一种简单的方法是使用列索引列表来索引z
,然后简单地在那里分配NumPy矩阵a
-
z[:,[0]] = a
另一种方法是使用矩阵a
的转置,这将是一个行向量,可以分配到z
中第一列的切片版本 -
z[:,0] = a.T