Python 将NumPy矩阵复制到NumPy数组中

Python 将NumPy矩阵复制到NumPy数组中,python,numpy,Python,Numpy,我正在使用cvxpy来解决一个优化问题。我想将输出,一个矩阵存储到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 (mo

我正在使用
cvxpy
来解决一个优化问题。我想将输出,一个
矩阵
存储到
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)
>z[:,0]=a
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:无法将输入数组从形状(3,1)广播到形状(3)
>>>np.copyto(z[:,0],a)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:无法将输入数组从形状(3,1)广播到形状(3)

如果能给我一点帮助,我将不胜感激。谢谢。

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

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

z[:,0] = a.T

a.A1
可能在这里起作用。也就是说,将二维矩阵转换成一维数组。@hpaulj你喜欢
.A1
这件事,不是吗?:)@hpaulj我不知道a.A1,这么好的语法糖:P