为什么NumPy ndarray.shape给(),但numpy ndarray.tofile将数据写入文件

时间:2014-05-27 18:19:32

标签: python numpy multidimensional-array

我有一个前同事的.npz文件,需要对它进行改头换面。可悲的是,我的新鲜一到Python和我目前难倒。我尝试的第一件事是用

将文件加载到Python中
>>> import numpy as np
>>> data = np.load("abc.npz")

现在我知道,有一个'记录' .npz中的对象所以我去了

>>> recdata = data['records'];

由于我还不知道该如何处理数据,所以我去了

>>> recdata.shape
()

>>> recdata.dtype
dtype('O')

看到形状,但没有什么......但是,

>>> recdata.tofile('data.out',",")

给了我一个包含一些数据的人类可读文件,一个例子

    {'30': {'caseinfo': {'nerve01 left': 2512, 'nerve02 right': 1824, 
'nerve02 left': 2458, 'nerve03 left': 8585, 'nerve01 right': 2206, 'nerve03 right': 4588}, 
'data': {'ps': array([  422,    39,    37,    35,    34,    36,    38,    39,    39,

...

468,   461,   449,   432,   414,   408,   410,   408], dtype=int16), 'pout': array([-28, -12, -10, ...,   7,   0,   7], dtype=int16), 
'Q': array([ 2885,  2933,  2933,  2934,  2933,  2933,  2933,  2933,  2936,
    2941,  2953,  2970,  3021,  3095,  3207,  3368,  3525,  3671,

......等等。有人能帮助我理解这里已经完成了吗?我猜这不是一个,而是几个数组。或者这是所有单独的维度保存和命名?

1 个答案:

答案 0 :(得分:1)

dtype 'O'(或等效object)只是一个Python对象

你有一个Python字典的零维,单值数组:

numpy.array({}, dtype=object)
#>>> array({}, dtype=object)

numpy.array({}, dtype=object).shape
#>>> ()

numpy.array({}, dtype=object).tofile("/tmp/data.out", ",")

只是提供一个包含" {}"的文件,正如您所期望的那样。