获取numpy结构化(即记录)数组的维度?

时间:2013-11-13 13:40:41

标签: python numpy multidimensional-array

假设我有一个numpy结构化数组(a.k.a。记录数组):

record_types = np.dtype([
                ('date',object),  #00 - Timestamp
                ('lats',float),   #01 - Latitude
                ('lons',float),   #02 - Longitude
                ('vals',float),   #03 - Value
                ])

data = np.zeros(10, dtype=record_types)

如果我尝试调用shape属性,我会得到(10,)

我该如何做以下事情:

y, x = data.shape

获取y = 10x = 4

谢谢!

1 个答案:

答案 0 :(得分:4)

这是关于结构化数组的一个令人困惑的事情。

你基本上有一个(n-1)D数组,其中每个是一个类似C的结构。

这种类型的结构允许各种有用的东西(例如,带有二进制格式的简单文件IO),但是对于许多其他用例来说它很混乱。对于你正在做的事情,使用pandas而不是直接使用结构化数组可能会更好。

有人说过,这就是你如何得到你所要求的:

def structured_shape(x):
    if len(x.dtype) > 0
        return list(x.shape) + [len(x.dtype)]
    else:
        return x.shape