存储在numpy void中的数组不返回形状/长度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储在numpy void中的数组不返回形状/长度相关的知识,希望对你有一定的参考价值。
我有一个从matlab结构加载的大型numpy void数组。我可以访问存储在主数组中的数组,但访问它们的形状会返回'()'。访问它们的长度会返回错误:未确定对象的len()。有没有办法让我访问子阵列的形状?
arr = scipy.io.loadmat('mymatfile.mat', squeeze_me=True)
sub_arr = arr['a'][0]['b']['c']
print(sub_arr)
print(sub_arr.shape)
print(len(sub_arr))
返回:[[0 0 0 0] [0 0 0 0]]()
TypeError:未确定对象的len()
解决方案:sub_arr.item()返回一个大小的数组
答案
0d数组的len
产生此错误:
In [77]: x = np.array(123)
In [78]: x
Out[78]: array(123)
In [79]: x.shape
Out[79]: ()
In [80]: len(x)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-80-a7f4a5366567> in <module>()
----> 1 len(x)
TypeError: len() of unsized object
loadmat
使用对象dtype数组来表示MATLAB单元格和结构。
什么是dtype
的sub_arr
?您可能需要使用sub_arr.item()or
sub_arr [()]`从对象层中提取该项。
以上是关于存储在numpy void中的数组不返回形状/长度的主要内容,如果未能解决你的问题,请参考以下文章