【发布时间】:2018-09-13 15:28:00
【问题描述】:
下面的 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]])) 这样的尝试都失败了,因为 reshape 不能处理列表。
从维度[[2,2],[2,2]] 到[4,4] 的逆向不是使用整形或转换为数组所显示的奇迹。
但是在 numpy 和 qutip 中是否实现了逆向?
编辑:对于熟悉 numpy 的人
如何将二维数组(例如这里的 4x4)重塑为 (2x2)x(2x2) 数组? numpy 的内置功能似乎不喜欢我要求的示例。 它不接受如下所示的列表列表:
import numpy as np
state = np.identity(4).reshape([[2,2],[2,2]])
我很惊讶以前从来没有人问过这个问题!
【问题讨论】:
-
[[2,2],[2,2]]的形状如何?和[2, 2, 2, 2]有什么区别?