如何访问numpy ndarray的元素?

如何访问numpy ndarray的元素?,第1张

如何访问numpy ndarray的元素

如果不详细查看您的错误,我可以指出一些陷阱。

.mat将包含MATLAB矩阵(始终为2d或更高),单元格和结构。

loadmat
以各种方式渲染它们。有些字典必须按名称索引。有对象数组(dtype =
object)。并且有nd数字或字符串数​​组。您可能必须经过几个级别才能获得数字数组。

检查数组的“形状”(大小)及其“ dtype”。如果shape是

()
dtype
object,则用提取它
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
索引符号的扩展。这不是特例。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5655029.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存