私はnumpysを使用しようとしていますnumpy.einsum
シンボリックsympy
の配列上の関数sympysの残酷なアインシュタインの総和の能力の欠如のため。私はこれまでのところ、これを試してみました:numpyメソッド内で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クラスで可能ですが、特定の状況でも可能ですか?
基本的にはこれが不可能です。 [Here's](https://stackoverflow.com/questions/44780195/generating-np-einsum-evaluation-graph)は、類似の質問へのリンクです。あなたが必要とするものに応じて、そこにある受注者を再利用することができるかもしれません。 –
'einsum'は、 'ij - > ...'文字列を翻訳スキームに翻訳するためにコンパイルされたコードを使用します。その多次元反復は数値(浮動小数点数、整数など)のためにコンパイルされています - 'c'が倍精度などで動作しているときを知りたがっていることを知っています。numpyコードはオブジェクトdtypeで動作することができます。 sympy'オブジェクトです。しかし、それは 'einsum'には当てはまりません。 – hpaulj