2
摘要:我有一個帶有905 x 905 x 762個元素的3D FLOAT數組。它存儲在IDL保存文件中,該文件無法用scipy.io.readsav
讀取。當我將這個數組的一部分(905 x 905 x 600個元素或更少)存儲在另一個IDL保存文件中時,此時scipy.io.readsav
可以正常工作。是否有可以用scipy.io.readsav讀取的最大文件大小限制?
這是我做的讀取任何這兩個文件的內容:
from scipy.io import readsav
filename = 'datacube.sav'
sav = readsav(filename, verbose=True)
這是當我讀到了更大的IDL保存文件,我得到的錯誤:
/Users/moncho/Codes/miniconda3/lib/python3.5/site-packages/scipy/io/idl.py:473: UserWarning: Using experimental 64-bit array read
warnings.warn("Using experimental 64-bit array read")
Traceback (most recent call last):
File "<ipython-input-1-c6753cefbd81>", line 1, in <module> runfile('/Users/moncho/Data/untitled7.py', wdir='/Users/moncho/Data')
File "/Users/moncho/Codes/miniconda3/lib/python3.5/site-packages/spyder/utils/site/sitecustomize.py", line 710, in runfile
execfile(filename, namespace)
File "/Users/moncho/Codes/miniconda3/lib/python3.5/site-packages/spyder/utils/site/sitecustomize.py", line 101, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "/Users/moncho/Data/untitled7.py", line 11, in <module>
sav = readsav(filename, verbose=True)
File "/Users/moncho/Codes/miniconda3/lib/python3.5/site-packages/scipy/io/idl.py", line 799, in readsav
r = _read_record(f)
File "/Users/moncho/Codes/miniconda3/lib/python3.5/site-packages/scipy/io/idl.py", line 360, in _read_record
rectypedesc['array_desc'])
File "/Users/moncho/Codes/miniconda3/lib/python3.5/site-packages/scipy/io/idl.py", line 284, in _read_array
array = np.fromstring(f.read(array_desc['nbytes']),
OSError: [Errno 22] Invalid argument
我運行在Mac OS X 10.11.6上使用python 3.5。任何想法都表示讚賞。謝謝!
Rane謝謝你的回答。我已經檢查了內存問題,這裏不是問題,所以也許這是一個錯誤,正如你提到的那樣。我對python非常陌生,所以我需要檢查如何運行python 2.7。現在我只安裝了3.5。 –