哪个数据集最适合存储复杂的数据结构?蟒蛇

时间:2018-01-19 12:49:53

标签: python arrays list data-structures

我有以下数据结构:

一个样本包含5个向量。在所有向量中,存在来自相同类的元素,但是向量之间的类是不同的。这些向量非常庞大,有数千个元素。 我通常有几个(5-10)样本。

目前,每个样本都有一个包含类向量的向量。我将样本的矢量存储在一个矢量中,这样我就可以一次管理所有样本。

我在填充数据集时使用向量原因我使用.append()。但是后来我不会改变数据只是迭代并分析它。

我的问题在于记忆。现在数据集吃掉了很多东西。所以一些优化会很棒。

  

这就是为什么我问是否有更好的方法来存储这个数据集?

如果我不更改数据,我听说阵列更好。将它们作为向量加载后,将所有内容转换为数组是否值得? 你推荐什么?

例如,我在下面显示一个类似于我的数据集:

class van:
    #some data
    pass;
class bus:
    #some more data
    pass;
class motorcycle:
    #something else
    pass;

all_data = []
for i in range(7):
    vans = [van() for i in range(5000)]
    buses = [bus() for i in range(2000)]
    mcycles = [motorcycle() for i in range(3000)]
    dataset = [vans, buses, mcycles]
    all_data.append(dataset)

2 个答案:

答案 0 :(得分:0)

如果您想保持当前代码不变(最小化工作),您可以考虑用lazylist替换列表。 lazylist@github

答案 1 :(得分:0)

考虑到您需要保留类结构,只需使用__slots__即可大幅提高内存消耗。创建新对象时,仅允许在此列表中定义的属性。但这更有效率。结帐question

另一种方法是使用numpy中的structured array。但这取决于数据的确切性质。