【发布时间】:2013-05-17 08:15:53
【问题描述】:
在 Python(也使用 numpy)中,我有一个列表列表,每个列表的长度不同。
[
[
["header1","header2"],
["---"],
[],
["item1","value1"]
],
[
["header1","header2","header3"],
["item2","value2"],
["item3","value3","value4","value5"]
]
]
我想让这个数据结构矩形:即保证len(list[x])对于所有x是恒定的,len(list[x][y])对于所有x、y等都是恒定的。
(这是因为我想将数据结构导入numpy)
我可以想到各种非pythonic的方法来做这样的事情(迭代结构,记录每个级别的最大长度,使用None进行第二次传递和填充值,但必须有更好的方法。
(我也希望解决方案不依赖于结构的维度;即它也应该适用于此类结构的列表......)
有没有我想念的简单方法?
【问题讨论】:
-
您在这里有三个级别的列表 - 它需要在哪些级别上成为矩形? (或立方,我猜,对于所有三个)。
-
一旦数据在 NumPy 中,您将如何处理?
-
Lattyware:全部;我最终想要的数据结构应该可以描述为 x×y×z 长方体。 KarlKnechtel:使用 Numpy 的多维切片,根据诸如“与字符串“My Data”在同一列中与字符串“Header Row”在同一行中”之类的内容来识别我真正感兴趣的数据。
-
您最初是如何获得这些数据的?它是来自您的其他一些代码,还是从 csv/json/xml 或其他形式的结构化数据中读取的?
-
作为一个小小的元点,我真的很好奇你为什么要使用 Numpy。在这种情况下,Numpy 提供了哪些普通列表不提供的功能?更广泛地说,虽然 numpy 完全能够存储各种奇怪的数据类型,但我不确定为什么有人将它用于非简单类型(这真是好奇!)。
标签: python list numpy nested-lists multidimensional-array