在python中,当我有一个数据集X,其行是样本的不同元素而列是样本的不同特征时,我通常按如下方式计算相关矩阵(假设为零均值):
import numpy as np
np.transpose(X).dot(X)/row
现在我有一个数据集X,其中有10万行和1百万列,如果我尝试计算相关矩阵,计算机仍然会被阻止。 执行for循环的替代方法在我看来是不切实际的,因为对于较小的数据集来说也很慢。
我该如何管理这么多数据?
答案 0 :(得分:0)
也许你可以使用发电机?我不知道它是否可以快速接受,但它会更好地记忆,因此计算机不会阻塞。 像这样https://gist.github.com/thatdatabaseguy/2577076
解释这个例子:
import numpy as np
def my_gen(some_tuple):
for each in some_tuple:
yield each
X = np.fromiter(my_gen(database.get_data())) # get_data() would return a cursor
修改强>: 在这种情况下,您无法找到另一种缩减/转换/拆分数据的方法。无论哪种方式,在单台计算机上处理起来都很困难。 祝你好运!