2

假设我有一个numpy结构化数组(又名记录数组):

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

谢谢!

4

1 回答 1

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
于 2013-11-13T13:52:39.817 回答