IndexError для научного кода Python
Я работал над кодом, который выполняет интеграцию, некоторые манипуляции, а затем еще большую интеграцию. Вот код (спасибо @JRichardSnape!). В основном этот код решает матричное уравнение, которое mesolve
делает. Он принимает в гамильтониане (ключевой физической матрице), матрицу начальной плотности, rho0
и список времен для оценки rho (t) в (для чего мы решаем) и операторов коллапса, L1, L2, L3, L4, L5, L6, L7
, Затем я извлекаю результаты, умножаю их на два других массива и строю график.
Я использую модуль квантовой механики qutip, так как у них есть нужный мне решатель: mesolve
, Модуль подсказок требует, чтобы все матрицы были преобразованы в квантовый объект, что делает Qobj(x).
Я добавил строку, определяющую rho0=L1 сразу после определения операторов коллапса. Когда это происходит, это дает мне ошибку индекса:
IndexError: index 0 is out of bounds for axis 0 with size 0
Я пытался выяснить, что не так. Это идет не так во время определения f_t. Проблема заключается в том, когда он пытается индексировать массив (n.data - это массив из одного элемента с комплексным числом 128). Что здесь происходит?
1 ответ
Это воспроизводит вашу ошибку:
In [34]: data = np.zeros((0,10))
In [35]: data
Out[35]: array([], shape=(0, 10), dtype=float64)
In [36]: data[0]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-36-88cae4a5bf31> in <module>()
----> 1 data[0]
IndexError: index 0 is out of bounds for axis 0 with size 0
Не углубляясь в связанный код, ясно, что рассматриваемый массив имеет 1-е измерение длины 0. x.shape[0]
это 0.
Вы можете получить такой массив, который будет индексировать другой с пустым списком,
In [44]: data=np.ones((3,4))
In [45]: data[[],...]
Out[45]: array([], shape=(0, 4), dtype=float64)
С ограниченной информацией, которую вы даете, трудно быть более конкретным. Проверьте форму всех предполагаемых массивов.
Так Qobj
задокументировано в http://qutip.org/docs/2.2.0/apidoc/classes.html
а также mesolve
в http://qutip.org/docs/2.2.0/apidoc/functions.html
а также rho0
как ожидается, будет rho0 : qutip.qobj
,
Базовый массив для ground
это (7,1)
форма, для L1
(эта проблема rho0
?) является (7,7)
и все 0, кроме [0,0].
Похоже, что это побочный эффект Интеграции, не успешный в Python QuTiP