numpy 中的轻量级张量
Levi-Civita tensor in numpy
我正在寻找紧凑的 numpy
代码来生成用户选择的任意维数的 Levi-Civita 张量。有什么想法吗?
来自 sympy
张量函数:
In [13]: tensor_functions.eval_levicivita(x,y,z)
Out[13]:
(-x + y)⋅(-x + z)⋅(-y + z)
──────────────────────────
2
def eval_levicivita(*args):
"""Evaluate Levi-Civita symbol."""
from sympy import factorial
n = len(args)
return prod(
prod(args[j] - args[i] for j in range(i + 1, n))
/ factorial(i) for i in range(n))
File: /usr/local/lib/python3.6/dist-packages/sympy/functions/special/tensor_functions.py
Type: function
对于合理数量的维度,张量大小不是那么大,所以我不会担心效率。首先,我会尝试一个迭代解决方案;不需要很花哨。
我正在寻找紧凑的 numpy
代码来生成用户选择的任意维数的 Levi-Civita 张量。有什么想法吗?
来自 sympy
张量函数:
In [13]: tensor_functions.eval_levicivita(x,y,z)
Out[13]:
(-x + y)⋅(-x + z)⋅(-y + z)
──────────────────────────
2
def eval_levicivita(*args):
"""Evaluate Levi-Civita symbol."""
from sympy import factorial
n = len(args)
return prod(
prod(args[j] - args[i] for j in range(i + 1, n))
/ factorial(i) for i in range(n))
File: /usr/local/lib/python3.6/dist-packages/sympy/functions/special/tensor_functions.py
Type: function
对于合理数量的维度,张量大小不是那么大,所以我不会担心效率。首先,我会尝试一个迭代解决方案;不需要很花哨。