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

Другие вопросы по тегам