科学 Python 代码的 IndexError

IndexError for scientific Python code

我一直在研究一些代码,这些代码可以进行集成、一些操作,然后进行更多集成。 这是 code(感谢@JRichardSnape!)。 基本上这段代码解决了一个矩阵方程,这就是 mesolve 所做的。它采用哈密顿量(一个关键物理矩阵)、一个初始密度矩阵 rho0 和一个时间列表来评估 rho(t) 在(我们正在解决的问题)和坍缩算子 L1, L2, L3, L4, L5, L6, L7.然后我提取结果并乘以另外两个数组并绘制它。

我使用 qutip 量子力学模块,因为它们有我需要的求解器:mesolve。 qutip模块要求将所有的矩阵都转换成一个量子对象,由Qobj(x)完成。

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

IndexError: index 0 is out of bounds for axis 0 with size 0

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

这重现了您的错误:

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)

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


所以 Qobj 记录在 http://qutip.org/docs/2.2.0/apidoc/classes.html

mesolvehttp://qutip.org/docs/2.2.0/apidoc/functions.html#qutip.mesolve.mesolve

rho0 预计为 rho0 : qutip.qobj

ground 的基础数组是 (7,1) 形状,L1(问题 rho0?)的基础数组是 (7,7) 并且全为 0,除了[0,0].

看起来这是

的副产品