Пример Numpy ниже
Цель: объект QuTiP
Цель моего запроса - добавить два объекта квантового состояния типа Qobj
(матрицы плотности), как показано нижепример состояния Вернера (чтобы придать ему физический смысл).
import qutip as q
r = .5
state = r * q.ket2dm(q.ghz_state(2)) + (1-r) * q.maximally_mixed_dm(4)
Сообщение об ошибке:
TypeError: Incompatible quantum object dimensions
Таким образом, можно перейти в состояние более низкого измерения, но затем мы потеряемсоответствующие свойства измерения, чтобы перейти к состоянию:
state = r * q.ket2dm(q.ghz_state(2)).data.toarray() + (1-r) * q.maximally_mixed_dm(4)
Мои попытки, например q.Qobj(q.maximally_mixed_dm(4).data.toarray().reshape([[2,2],[2,2]]))
, не увенчались успехом, так как изменение формы не обрабатывает списки списков.
Обратный переход от измерений [[2,2],[2,2]]
вниз[4,4]
- не чудо, использующее изменение формы или как показано преобразованием в массив.Но реализовано ли обратное либо в numpy, ни в qutip?
Редактировать: Для людей, знакомых с numpy
Как изменить форму двумерного массива (например, здесь 4x4) в (2x2)) х (2х2) один?Кажется, встроенная функция numpy не нравится в моем запрошенном примере.Он не принимает списки списков, как показано здесь:
import numpy as np
state = np.identity(4).reshape([[2,2],[2,2]])
Я был удивлен, что никто никогда не задавал этот вопрос раньше!