Я хочу иметь возможность индексировать объект, подставлять значения его индексов, но при этом помнить его исходные индексы.Сохранение исходных индексов в индексированных объектах Sympy
from sympy.tensor import IndexedBase, Idx
C = IndexedBase("C")
i,j = Idx("i"), Idx("j")
expr = C[i,j]
expr = expr.subs({i:1, j:2})
Возможно ли получить исходные индексы (i, j) из выражения expr? Поскольку выражения неизменяемы, любые модификации, которые я делаю в исходном выражении, не будут отображаться в новом выражении.
Я полагаю, что общий вопрос здесь заключается в том, как добавить дополнительную информацию к символам Sympy.
Спасибо за ваш ответ. Однако я не уверен, отвечает ли этот вопрос на этот вопрос. Обратите внимание, что в моем коде я хочу получить '(i, j)' из _final_ 'expr', который теперь равен' C [1,1] '. Я хочу, чтобы объект Indexed смог запомнить, каковы его исходные индексы. – woggy
Для чего нужна эта информация? Как бы вы использовали эту информацию? – smichr
Из одного выражения я генерирую целую связку на основе диапазонов индексов. например 'A [i, j]' может стать '[A [1,1], A [1,2], A [1,3] ...]'. Затем я применяю преобразования к парам индексов, обычно сопоставляя две соседние пары до единицы. Например, преобразуйте '(i, j)' в соответствии с правилом, в котором указано, где значения '1,1' сводятся к одному индексу' 1'. Итак, 'A [1,1]' становится 'A [1]'. Только один пример. – woggy