科学Python代码的IndexError

时间:2015-08-21 22:33:02

标签: python numpy scipy qutip

我一直在研究一些代码,它们进行集成,一些操作,然后进行更多集成。 这是code(感谢@JRichardSnape!)。 基本上这个代码解决了矩阵方程,这是mesolve所做的。它接受哈密顿量(一个关键物理矩阵),一个初始密度矩阵rho0,以及一个时间tlist来评估rho(t)at(我们要求解决的)和崩溃算子{{1 }}。然后我提取结果并乘以另外两个数组并绘制它。

我使用qutip量子力学模块,因为他们有我需要的求解器:L1, L2, L3, L4, L5, L6, L7。 qutip模块要求将所有矩阵转换为量子对象,这由Qobj(x)完成。

我在崩溃运算符定义之后添加了一条定义rho0 = L1的行。发生这种情况时,它会给我一个索引错误:

mesolve

我试图找出问题所在。在f_t的定义过程中出错了。问题是当它试图索引数组时(n.data是complex128数字的单个元素数组)。发生了什么事?

1 个答案:

答案 0 :(得分:3)

这会再现您的错误:

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

如果不钻研链接代码,很明显所讨论的数组的第一维长度为0。 x.shape[0]为0。

你可能会得到这样一个数组,用空列表索引另一个数组,

In [44]: data=np.ones((3,4))

In [45]: data[[],...]
Out[45]: array([], shape=(0, 4), dtype=float64)

由于您提供的信息有限,因此很难更具体。检查所有可疑阵列的形状。

因此http://qutip.org/docs/2.2.0/apidoc/classes.html

中记录了Qobjhttp://qutip.org/docs/2.2.0/apidoc/functions.html#qutip.mesolve.mesolve

mesolve

rho0预计为rho0 : qutip.qobj

ground的基础数组是(7,1)形状,L1(问题rho0?)是(7,7),所有0&#39; s除了[0,0]。

看起来这是Integration not successful in Python QuTiP

的衍生物