Python 表示冗余和稀疏数据优化的巨型阵列

Python 表示冗余和稀疏数据优化的巨型阵列,python,arrays,numpy,scikit-learn,Python,Arrays,Numpy,Scikit Learn,我试图寻找我的问题的答案,它可能存在,但我找不到任何答案,可能是因为我不知道如何命名它 那么让我们开门见山吧 我正在研究一个统计模型。我的数据集包含关于45个公共交通站点的信息和关于它们的静态信息(45行和大约1000个特征列)以及规则间隔的时间测量(大约2000行,但只有10列)。因此,信息本身的“真实”量足够小(约500 Mb),可以轻松处理 问题是python上的大多数统计模块需要简单的2d数组,比如numpy的数组。因此,我必须合并我的数据,对于所有的2000000行测量,我必须附加10

我试图寻找我的问题的答案,它可能存在,但我找不到任何答案,可能是因为我不知道如何命名它

那么让我们开门见山吧

我正在研究一个统计模型。我的数据集包含关于45个公共交通站点的信息和关于它们的静态信息(45行和大约1000个特征列)以及规则间隔的时间测量(大约2000行,但只有10列)。因此,信息本身的“真实”量足够小(约500 Mb),可以轻松处理

问题是python上的大多数统计模块需要简单的2d数组,比如numpy的数组。因此,我必须合并我的数据,对于所有的2000000行测量,我必须附加1000多列与测量发生的站点相关的特征,因此我最终得到一个17GB的数据库。。。但大部分都是多余的,我觉得这是浪费资源

我有一个想法,但我完全不知道如何去做:最终数组只是一个函数,对于给定的I和j返回一个值,那么我是否可以“模拟”,或者提出一个伪数组、伪数组、数组接口,它可以像numpy数组一样被模块接受?我不明白为什么我不能这样做,因为数组最终是一个函数(I:j)->a[I][j]。我的访问可能比经典阵列的内存访问慢一点,但这是我的问题,它仍然会很快。我只是不知道怎么做

提前感谢您,如果我需要提供更多信息或改变提问方式,请告诉我

编辑:

好吧,也许我可以澄清一下我的问题:


我的数据可以以关系数据库或对象数据库的方式显示。这种格式非常小(500 Mb),但当我合并我的表以使scikit能够学习处理它时,它变得太大(17 Gb+),而且似乎是在浪费内存!我可以使用技术来处理大数据,这可能是一个解决方案,但不可能阻止这样做吗?我是否可以直接在scikit_learn中使用数据,而不必显式合并表?我可以在不占用额外内存的情况下进行模拟数据结构的隐式合并吗

我认为没有统一的答案,因为这取决于您想进一步对数据做什么。我可以向您推荐一本书,其中包含大量数据挖掘技术。希望你能在那里找到你需要的。谢谢你的回答。但是我不需要挖掘大量的数据,我正在努力防止数据变得庞大,因为真正的信息量,数据量,实际上很小,只有在简单地组合在一个数组中时才会变大。类似的问题是,如果我有一个巨大的矩阵,但非常稀疏,因此内存占用很轻,但我需要一个密集的2d数组来实现一个函数,但它会显著增加我的数据的内存占用…有一个
scipy.sparse
类已与
scikit learn
一起使用。搜索
[scikit learn]sparse
要找到这样的问题,并且它仅适用于稀疏矩阵,我引入了稀疏矩阵的案例来说明问题,并给出了一个关于使用大量空间和可能包含的数据的问题的示例。我的问题更一般。我知道如何在给定I和j的情况下,在内存高效的容器中获得所需的值。它的行为类似于一个数组,但不是一个数组。您必须研究
sklearn
代码才能了解它需要什么功能。使用
x[i,j]
进行索引只是一个开始。我认为没有统一的答案,因为这取决于您想进一步对数据做什么。我可以向您推荐一本书,其中包含大量数据挖掘技术。希望你能在那里找到你需要的。谢谢你的回答。但是我不需要挖掘大量的数据,我正在努力防止数据变得庞大,因为真正的信息量,数据量,实际上很小,只有在简单地组合在一个数组中时才会变大。类似的问题是,如果我有一个巨大的矩阵,但非常稀疏,因此内存占用很轻,但我需要一个密集的2d数组来实现一个函数,但它会显著增加我的数据的内存占用…有一个
scipy.sparse
类已与
scikit learn
一起使用。搜索
[scikit learn]sparse
要找到这样的问题,并且它仅适用于稀疏矩阵,我引入了稀疏矩阵的案例来说明问题,并给出了一个关于使用大量空间和可能包含的数据的问题的示例。我的问题更一般。我知道如何在给定I和j的情况下,在内存高效的容器中获得所需的值。它的行为类似于一个数组,但不是一个数组。您必须研究
sklearn
代码才能了解它需要什么功能。使用
x[i,j]
进行索引只是一个开始。