NumPy是一个非常有用的库,从使用它我发现它能够轻松处理相当大(10000 x 10000)的矩阵,但开始与更大的任何东西挣扎(试图创建一个50000 x 50000的矩阵)失败).显然,这是因为大量的内存需求.
有没有办法在某种程度上在NumPy中创建巨大的矩阵(比如100万乘100万)(没有几TB的RAM)?
我正在尝试在python中实现具有200k +数据点的1000维数据的算法.我想使用numpy,scipy,sklearn,networkx和其他有用的库.我想执行所有点之间的成对距离等操作,并在所有点上进行聚类.我已经实现了以合理的复杂度执行我想要的工作算法但是当我尝试将它们扩展到我的所有数据时,我用完了ram.我当然这样做,在200k +数据上创建成对距离的矩阵需要很多内存.
接下来是:我真的很想在具有少量内存的糟糕计算机上执行此操作.
有没有可行的方法让我在没有低ram限制的情况下完成这项工作.它需要更长的时间才真正不是问题,只要时间要求不会无限!
我希望能够让我的算法工作,然后在一小时或五个小时后回来,而不是因为它用完了公羊而被卡住了!我想在python中实现它,并能够使用numpy,scipy,sklearn和networkx库.我希望能够计算到我所有点的成对距离等
这可行吗?我将如何解决这个问题,我可以开始阅读哪些内容?
最好的问候//梅斯默
基本上,当我尝试在numpy矩阵上执行代数运算时,我在python中遇到内存错误.变量u,是一个双倍的大矩阵(在失败的情况下,它是一个288x288x156的双倍矩阵.我只在这个巨大的情况下得到这个错误,但我能够在其他大型矩阵上做到这一点,只是不是这么大).这是Python错误:
Traceback (most recent call last):
File "S:\3D_Simulation_Data\Patient SPM Segmentation\20 pc
t perim erosion flattop\SwSim.py", line 121, in __init__
self.mainSimLoop()
File "S:\3D_Simulation_Data\Patient SPM Segmentation\20 pc
t perim erosion flattop\SwSim.py", line 309, in mainSimLoop
u = solver.solve_cg(u,b,tensors,param,fdHold,resid) # Solve the left hand si
de of the equation Au=b with conjugate gradient method to approximate u
File "S:\3D_Simulation_Data\Patient SPM Segmentation\20 pc
t perim erosion flattop\conjugate_getb.py", line 47, in solv
e_cg
u = u + alpha*p
MemoryError
Run Code Online (Sandbox Code Playgroud)
u = u + …
我正在尝试创建一个非常大的numpy零数组,然后将另一个数组中的值复制到大的零数组中.我正在使用Pycharm并且我不断得到:MemoryError即使我尝试并且只创建数组.以下是我尝试创建零数组的方法:
import numpy as np
last_array = np.zeros((211148,211148))
Run Code Online (Sandbox Code Playgroud)
根据这个问题,我已经尝试将Pycharm中的内存堆从750m增加到1024m:https://superuser.com/questions/919204/how-can-i-increase-the-memory-heap-in-pycharm ,但是这似乎没有帮助.
如果您想进一步澄清,请与我们联系.谢谢!
我正在尝试使用python中的csv模块处理从csv文件获取的数据.这里有大约50列和401125行.我使用以下代码块将该数据放入列表中
csv_file_object = csv.reader(open(r'some_path\Train.csv','rb'))
header = csv_file_object.next()
data = []
for row in csv_file_object:
data.append(row)
Run Code Online (Sandbox Code Playgroud)
我可以使用len(数据)获取此列表的长度并返回401125.我甚至可以通过调用列表索引来获取每个单独的记录.但是当我尝试通过调用np.size(data)来获取列表的大小时(我将numpy导入为np),我获得了以下堆栈跟踪.
MemoryError Traceback(最近一次调用last)in()----> 1 np.size(data)
C:\ Python27\lib\site-packages \numpy\core\fromnumeric.pyc in size(a,axis)2198返回a.size 2199除AttributeError: - > 2200返回asarray(a).size 2201 else:2202试试:
asarray中的C:\ Python27\lib\site-packages \numpy\core \numeric.pyc(a,dtype,order)233 234""" - > 235返回数组(a,dtype,copy = False,order = order )236 237 def asanyarray(a,dtype = None,order = None):
的MemoryError:
我甚至无法使用列表索引将该列表分成多个部分或将此列表转换为numpy数组.它给出了同样的内存错误.
我该如何处理这种大数据样本.有没有其他方法来处理像这样的大型数据集.
我在Windows 7专业版中使用ipython笔记本.