Chciałbym utworzyć macierz 3D o określonym rozmiarze, obliczając wartość dla każdej kombinacji indeksów. Każda wartość w macierzy będzie symboliczna.Wielowymiarowa macierz symboliczna w Pythonie
Co próbowałem do tej pory:
import numpy as np
import sympy as sp
var1 = np.arange(1,10,2)
var2 = np.arange(1,10,2)
var3 = np.arange(20,50,5)
myMatrix = np.zeros(shape = (len(var1), len(var2), len(var3)))
t = sp.symbols('t')
for ii in range(len(var1)):
for jj in range(len(var2)):
for kk in range(len(var3)):
myMatrix[ii][jj][kk] = var1[ii] * var2[jj] * var3[kk] * t
To daje mi błąd:
TypeError: can't convert expression to float
który o ile mi zrozumieć, ze względu na łączenie numpy i sympy. Dlatego starałem:
myMatrix = sp.MatrixSymbol('temp', len(var1), len(var2), len(var3))
zamiast:
myMatrix = np.zeros(shape = (len(var1), len(var2), len(var3)))
i dostaje błąd:
TypeError: new() takes exactly 4 arguments (5 given)
Podsumowując, moje pytanie brzmi: w jaki sposób można utworzyć macierz 3D z wszelkie zmienne w środku, aby móc go użyć w zagnieżdżonej pętli, która obejmuje obliczenia symboliczne?
(Jest to mój pierwszy post w tej społeczności, więc proszę dać mi znać, jeśli nie zrobił nic złego.)
SymPy ma typ matrycy. Jeśli tworzysz matrycę symboliczną, lepiej z niej korzystać. – asmeurer
W rzeczywistości nie zauważyłem, że macierz jest 3D. W SymPy 1.0 będziesz mógł użyć 'sympy.tensor.array.Array'. – asmeurer