gpt4 book ai didi

python - 可以在 numpy 方法中使用 sympy 对象吗?

转载 作者:太空宇宙 更新时间:2023-11-04 02:44:18 25 4
gpt4 key购买 nike

我正在尝试在符号 sympy 数组上使用 numpys numpy.einsum 函数,因为 sympy 严重缺乏爱因斯坦求和约定功能。到目前为止我已经试过了:

>>> from sympy import *
>>> import numpy as np
>>> a11,a12,a13,a21,a22,a23,a31,a32,a33 = symbols('a11,a12,a13,a21,a22,a23,a31,a32,a33')
>>> np.einsum('ii', a)
Traceback (most recent call last):
File "<pyshell#469>", line 1, in <module>
np.einsum('ii', a)
File "C:\Python35\lib\site-packages\numpy\core\einsumfunc.py", line 948, in einsum
return c_einsum(*operands, **kwargs)
TypeError: invalid data type for einsum
>>> a = Array([[a11,a12,a13],[a21,a22,a23],[a31,a32,a33]])
>>> np.einsum('ii', a)
Traceback (most recent call last):
File "<pyshell#472>", line 1, in <module>
np.einsum('ii', a)
File "C:\Python35\lib\site-packages\numpy\core\einsumfunc.py", line 948, in einsum
return c_einsum(*operands, **kwargs)
ValueError: einstein sum subscripts string contains too many subscripts for operand 0

如您所见,我尝试传递一个 numpy 原生数组和一个 sympy 数组,但都没有成功。这种混合(对于跨模块的数据类型)对于一般的 python 类是否可行,但对于特定情况也适用?

最佳答案

NumPy 的 einsum 需要数值数据(毕竟,NumPy 中的“Num”代表数值)。但是 SymPy 可以自己处理符号张量收缩,使用 Tensor module .

from sympy import *
A = Matrix(MatrixSymbol("a", 3, 3))
trace = tensorcontraction(A, (0, 1))

返回 a[0, 0] + a[1, 1] + a[2, 2]

关于python - 可以在 numpy 方法中使用 sympy 对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45589743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com