Python 有没有一种方法可以使数组条目在NumPy中成为复杂变量?

Python 有没有一种方法可以使数组条目在NumPy中成为复杂变量?,python,arrays,numpy,matrix,matrix-multiplication,Python,Arrays,Numpy,Matrix,Matrix Multiplication,我正在使用Python中的numpy数组。是否有办法将数组的条目作为变量保存,以便它们遵循适当的矩阵乘法和其他矩阵函数(加法、行列式等) 例如: import numpy as np A = np.array([[a, b], [c, d]]) B = np.array([[e, f], [g, h]]) C = np.dot(A,B) # C should be [ae+bf ag+bh]

我正在使用Python中的numpy数组。是否有办法将
数组的条目作为变量保存,以便它们遵循适当的矩阵乘法和其他矩阵函数(加法、行列式等)

例如:

         import numpy as np
         A = np.array([[a, b], [c, d]])
         B = np.array([[e, f], [g, h]])
         C = np.dot(A,B)

         # C should be [ae+bf ag+bh]
         #             [ce+df cg+dh]
另外,由于我的矩阵元素一般都很复杂,我希望 其中
i
被解释为1的虚根,而不是变量。我可以编写定义自己函数的代码,但有没有一种干净的方法呢?

请参见此处:

Numpy尊重Python的虚数

>>> a = np.array([i+1j for i in range(3)])
>>> b = np.array([i+2j for i in range(3,6)])
>>> a*b
array([-2.+3.j,  2.+6.j,  8.+9.j])
这也适用于给定的示例(如预期的那样):

至于将它们作为变量保存,NumPy会将所有内容通过其Python接口传递给较低级别的C代码,因此我怀疑您能否将所有内容存储为变量

但是,您可以编写任意函数来完成此任务:

def myfunc(obj):
     A = np.array([[obj['a']], [obj['b']]])
     B = np.array([[obj['c']], [obj['d']]])
     C = np.dot(A,B)
     return C
请看这里:

Numpy尊重Python的虚数

>>> a = np.array([i+1j for i in range(3)])
>>> b = np.array([i+2j for i in range(3,6)])
>>> a*b
array([-2.+3.j,  2.+6.j,  8.+9.j])
这也适用于给定的示例(如预期的那样):

至于将它们作为变量保存,NumPy会将所有内容通过其Python接口传递给较低级别的C代码,因此我怀疑您能否将所有内容存储为变量

但是,您可以编写任意函数来完成此任务:

def myfunc(obj):
     A = np.array([[obj['a']], [obj['b']]])
     B = np.array([[obj['c']], [obj['d']]])
     C = np.dot(A,B)
     return C

使用
sympy

from  sympy import *

A=MatrixSymbol('A', 2, 2)
B=MatrixSymbol('B', 2,2)
print Matrix(A)
print  Matrix(A*B)

>>>Matrix([[A[0, 0], A[0, 1]], [A[1, 0], A[1, 1]]])
   Matrix([[A[0, 0]*B[0, 0] + A[0, 1]*B[1, 0], A[0, 0]*B[0, 1] + A[0,  1]*B[1, 1]], [A[1, 0]*B[0, 0] + A[1, 1]*B[1, 0], A[1, 0]*B[0, 1] + A[1, 1]*B[1, 1]]])

使用
sympy

from  sympy import *

A=MatrixSymbol('A', 2, 2)
B=MatrixSymbol('B', 2,2)
print Matrix(A)
print  Matrix(A*B)

>>>Matrix([[A[0, 0], A[0, 1]], [A[1, 0], A[1, 1]]])
   Matrix([[A[0, 0]*B[0, 0] + A[0, 1]*B[1, 0], A[0, 0]*B[0, 1] + A[0,  1]*B[1, 1]], [A[1, 0]*B[0, 0] + A[1, 1]*B[1, 0], A[1, 0]*B[0, 1] + A[1, 1]*B[1, 1]]])

这是一个复制品。请阅读现有的问题。请看这是一个重复的问题。请阅读现有问题。请参阅