2016-01-31 3 views
1
from __future__ import division 
import scipy.io 
import numpy as np 
import math 
from math import sin 
from math import cos 


mat = np.zeros((1024,1024,360),dtype=np.float32)          

x = scipy.io.loadmat('/home/prakriti/Project/A.mat')   
A = np.array((x.values())) 
mat[:,:,0:120] = A[0][:,:,:] 
del x 
del A 

y = scipy.io.loadmat('/home/prakriti/Project/B.mat') 
B = np.array((y.values())) 
mat[:,:,120:240] = B[0][:,:,:] 
del y 
del B 

z = scipy.io.loadmat('/home/prakriti/Project/C.mat') 
C = np.array((z.values())) 
mat[:,:,240:360] = C[0][:,:,:] 
del z 
del C 

s = np.linspace(0,1023,1024) 
v = np.linspace(0,1023,1024) 
ss,vv = np.meshgrid(s,v) 
zz = ss**2 + vv**2 
print zz 

У меня была ошибка при этом. Может ли кто-нибудь объяснить мне, в чем проблема? Я пытаюсь создать матрицу с 3-D матрицами с доступными мне данными. Я имею 49 ГБ оперативной памяти. Почему я все еще получаю ошибку памяти?Ошибка памяти в Python, несмотря на наличие достаточного количества оперативной памяти

Traceback (most recent call last): 
    File "/home/prakriti/Project/fdk_new.py", line 11, in <module> 
    x = scipy.io.loadmat('/home/prakriti/Project/A.mat') 
    File "/usr/lib/python2.7/dist-packages/scipy/io/matlab/mio.py", line 152, in loadmat 
    matfile_dict = MR.get_variables(variable_names) 
    File "/usr/lib/python2.7/dist-packages/scipy/io/matlab/mio5.py", line 270, in get_variables 
    hdr, next_position = self.read_var_header() 
    File "/usr/lib/python2.7/dist-packages/scipy/io/matlab/mio5.py", line 223, in read_var_header 
    stream = BytesIO(dcor.decompress(data)) 
MemoryError 
+0

Какие размеры и тип данных являются содержимым A.mat? Насколько велик файл? – barny

ответ

0

Предоставление ответа, поскольку комментарий не будет правильно отформатировать.

Не пытайтесь создать дополнительную память. GIL занимает немного времени, чтобы выпустить его.

Вместо:

x = scipy.io.loadmat('/home/prakriti/Project/A.mat')   
A = np.array((x.values())) 
mat[:,:,0:120] = A[0][:,:,:] 
del x 
del A 

сделать:

mat[:,:,0:120] = np.array((scipy.io.loadmat('/home/prakriti/Project/A.mat').values()))[0][:,:,:] 

и т.д ...

В противном случае, нам нужно больше информации. Как размер файлов mat.

+0

Он говорит ValueError: не могу установить элемент массива с последовательностью, когда я пытаюсь сделать это для большего. mat [:,:, 0:60] = np.array ((scipy.io.loadmat ('/ home/prakriti/Project/A1.mat'). values ​​())) [0] [:,:,: ]. Я должен добавить шесть из них вот так. коврик [:,:, 60: 120] = np.array ((scipy.io.loadmat ('/ home/prakriti/Project/B1.mat'). Values ​​())) [0] [:,: ,:] –