当前位置:  开发笔记 > 编程语言 > 正文

Python:Flatten ndarray

如何解决《Python:Flattenndarray》经验,为你挑选了1个好方法。

我继承了一些python代码,它有一个ndarray,看起来像:

>>> ARCoeff
Out[6]: array([array([[ 1.16179327, -0.1721163 ]])], dtype=object)

>>> ARCoeff.dtype
Out[7]: dtype('O')

>>> ARCoeff.shape
Out[8]: (1,)

>>> type( ARCoeff )
Out[2]: numpy.ndarray

如何将数组提取出类似的内容

[ 1.16179327, -0.1721163 ]

编辑:

根据提供的建议,这是我得到的:

>>> z = ARCoeff.flatten().tolist()

>>> z[0]
Out[19]: array([[ 1.16179327, -0.1721163 ]])

>>> z1 = z[0]

>>> type(z1)
Out[21]: numpy.ndarray

所以,我回到了一个ndarray.

EDIT2:

>>> np.version.version
Out[31]: '1.8.0'

EDIT3:

>>> z = ARCoeff.flatten().flatten().tolist()
>>> type(z)
Out[38]: list
>>> z1 = z[0]
>>> type(z1)
Out[40]: numpy.ndarray

我可以知道为什么我的问题被否决了吗?我是Python的新手,所以请耐心等待.



1> hpaulj..:

要重现OP的显示,我必须使用:

In [83]: x=np.zeros((1,),dtype=object)    
In [84]: x[0]=np.array([[ 1.16179327, -0.1721163 ]])
In [85]: x
Out[85]: array([array([[ 1.16179327, -0.1721163 ]])], dtype=object)

这跟不一样

In [75]: a = np.array([np.array([[ 1.16179327, -0.1721163 ]])], dtype=object)

In [76]: a
Out[76]: array([[[1.16179327, -0.1721163]]], dtype=object)

In [78]: a.shape
Out[78]: (1, 1, 2)

np.array 尝试将其输入转换为高维数组,并删除大多数嵌套数组的证据.

从名称来看,我猜这个数组来自一个名称相似的库ARC- 我相信这是一个映射库.

无论如何,我们可以通过索引来拉出内部数组:

In [86]: x[0]
Out[86]: array([[ 1.16179327, -0.1721163 ]])

这是一个简单的2d数组,可以展平或平整,或重塑:

In [87]: x[0].flatten()
Out[87]: array([ 1.16179327, -0.1721163 ])

flatten对原版没有任何意义,x因为那已经是1d了.


ARCoeff在MATLAB文档中找到了

http://www.mathworks.com/help/econ/modify-regarima-model-properties.html

对象数组中的2d数组是scipy加载MATLAB文件的特征.

在Octave我能做到

octave:11> ARCoeff={[1,2,3]};
octave:12> save -7 test.mat ARCoeff

并在IPython中加载文件 scipy.io.loadmat

In [99]: from scipy.io import loadmat

In [100]: M=loadmat('test.mat')

In [101]: M['ARCoeff']
Out[101]: array([[array([[ 1.,  2.,  3.]])]], dtype=object)

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有