Python 我怎样才能得到';广播';(m,)值辛矩阵的(m,n)数组,它应该以(n,)numpy数组作为参数?

Python 我怎样才能得到';广播';(m,)值辛矩阵的(m,n)数组,它应该以(n,)numpy数组作为参数?,python,sympy,lambdify,Python,Sympy,Lambdify,我有以下情况: 我定义了一个辛矩阵(向量),它是某些元素(而不是所有元素)参数的函数。因此,例如,采取行动 from sympy import * a = Symbol('a') M = Matrix([a,0]) 现在我想让它成为一个以numpy数组为元素的函数,我使用lambdify来实现它。事实上,我希望M是一个行向量,所以我做了下面的工作,我发现了 将列表或数组(例如[0,1]传递给此新函数会使我: In [596]: funcM([0,1]) Out[596]: [[0, 1], 0

我有以下情况: 我定义了一个辛矩阵(向量),它是某些元素(而不是所有元素)参数的函数。因此,例如,采取行动

from sympy import *
a = Symbol('a')
M = Matrix([a,0])
现在我想让它成为一个以numpy数组为元素的函数,我使用lambdify来实现它。事实上,我希望M是一个行向量,所以我做了下面的工作,我发现了

将列表或数组(例如
[0,1]
传递给此新函数会使我:

In [596]: funcM([0,1])
Out[596]: [[0, 1], 0]
实际上,我希望函数
funcM
的工作方式与输出相同

[[0,1],[0,0]]
因此,输出包含两个列向量,列表中的每个输入值对应一个列向量,因此0,0表示输入0,1,0表示输入1。
谢谢你帮助我

我发现
print(funcM.\uu doc\uuuu)
有助于了解生成的
numpy
代码是什么样子的。函数的代码是
([a,0])
lambdify
对python/numpy进行相对简单的词法翻译。如果您不知道如何执行某些操作,例如使用
numpy
构建所需的数组,那么尝试通过
sympy
到达那里是不可能的
numpy
广播
控制2个或更多阵列的交互;当从较小的块构造数组时,它不会起作用。好的,谢谢,这有助于我理解问题的确切位置。我仍然不知道如何解决这个问题……虽然我可以编写一个将0行连接到1d数组的
numpy
表达式,但我不知道如何从sympy表达式生成这个表达式。
[[0,1],[0,0]]