如果不详细查看您的错误,我可以指出一些陷阱。
.mat将包含MATLAB矩阵(始终为2d或更高),单元格和结构。
loadmat以各种方式渲染它们。有些字典必须按名称索引。有对象数组(dtype =
object)。并且有nd数字或字符串数组。您可能必须经过几个级别才能获得数字数组。
检查数组的“形状”(大小)及其“ dtype”。如果shape是
()和
dtypeobject,则用提取它
y=x[()]。
这是一个0d对象数组的示例:
In [4]: y=np.arange(3)In [5]: x=np.empty((), dtype=object) In [6]: x[()]=yIn [7]: xOut[7]: array(array([0, 1, 2]), dtype=object)In [8]: x.shapeOut[8]: ()In [9]: x.dtypeOut[9]: dtype('O')In [10]: x[0]...IndexError: too many indices for arrayIn [11]: x[()]Out[11]: array([0, 1, 2])
x是一个0d数组(x.ndim),因此必须使用0元素元组索引
()。对于MATLAB程序员来说,这似乎很奇怪。
在
numpy(一般
x[a,b,c]为Python)中,与
x[(a,b,c)]和相同
ind=(a,b,c);x[ind]。换句话说,参数in
[]被理解为值的元组。
(1,2)是2元素元组,
(1,)是一个元素(
(1)只是一个分组),并且
()是0元素元组。因此,
x[()]这只是常规
nd索引符号的扩展。这不是特例。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)