【问题标题】:IndexError for scientific Python code科学 Python 代码的 IndexError
【发布时间】:2015-08-21 22:33:02
【问题描述】:

我一直在编写一些代码来进行集成、一些操作,然后再进行更多的集成。 这是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 数字的单元素数组)。怎么回事?

【问题讨论】:

  • 为什么投反对票?我添加了详细信息..您需要更多吗?
  • 我创建了一个qutip 标签。对于大多数 numpyscipy 用户来说,这个问题已经变得过于技术化了。

标签: python numpy scipy qutip


【解决方案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

如果不深入研究链接的代码,很明显有问题的数组的第一维长度为 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#qutip.mesolve.mesolve

rho0 预计为rho0 : qutip.qobj

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

看起来这是Integration not successful in Python QuTiP的衍生产品

【讨论】:

  • 那你需要澄清你的问题。我解释了导致错误的可能情况。我无法从链接和简短的描述中看出是哪一行产生了错误,或者可能涉及什么变量。
  • 单个元素数组会给出不同的错误,np.array(1.23)[0]0-d arrays cannot be index,或者没有错误np.array([12.323])[0]
  • 我澄清了,是不是更好?
  • 不多。我不需要了解大局;重要的是围绕错误变量的细节。诸如堆栈跟踪的部分、变量的形状和类型、突出显示问题区域的代码之类的东西。有很多很好的调试问题的 SO 示例。
  • 我来猜一猜。代码的早期定义了rho0 = ground*ground.dag(),您说添加rho0=L1 时出现了问题。 L1Qobj(或调用它的结果),ground 也是。我对Qobj 一无所知。我不知道它是否是一个数组子类,或者它是否具有形状或允许索引。但从表面上看,rho0 的这两个定义看起来并不兼容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 2019-11-26
  • 1970-01-01
相关资源
最近更新 更多