在执行“ array.tofile(fp)”行时,出现OSError,它显示“ OSError:269892000请求并写入了299188084”。我能确切知道这是什么意思,对此可能的解决方案是什么?
def write_array(fp, array, version=None, allow_pickle=True, pickle_kwargs=None):
...
...**strong text**
_check_version(version)
used_ver = _write_array_header(fp, header_data_from_array_1_0(array),
version)
# this warning can be removed when 1.9 has aged enough
if version != (2, 0) and used_ver == (2, 0):
warnings.warn("Stored array in format 2.0. It can only be"
"read by NumPy >= 1.9", UserWarning)
# Set buffer size to 16 MiB to hide the Python loop overhead.
buffersize = max(16 * 1024 ** 2 // array.itemsize, 1)
if array.dtype.hasobject:
# We contain Python objects so we cannot write out the data
# directly. Instead, we will pickle it out with version 2 of the
# pickle protocol.
if not allow_pickle:
raise ValueError("Object arrays cannot be saved when "
"allow_pickle=False")
if pickle_kwargs is None:
pickle_kwargs = {}
pickle.dump(array, fp, protocol=2, **pickle_kwargs)
elif array.flags.f_contiguous and not array.flags.c_contiguous:
if isfileobj(fp):
array.T.tofile(fp)
else:
for chunk in numpy.nditer(
array, flags=['external_loop', 'buffered', 'zerosize_ok'],
buffersize=buffersize, order='F'):
fp.write(chunk.tobytes('C'))
else:
if isfileobj(fp):
print("Entered1")
array.tofile(fp)
else:
for chunk in numpy.nditer(
array, flags=['external_loop', 'buffered', 'zerosize_ok'],
buffersize=buffersize, order='C'):
fp.write(chunk.tobytes('C'))
Run Code Online (Sandbox Code Playgroud)
小智 14
当您使用 numpy.load 的变体读取数据但驱动器中没有足够的空间时,就会出现此问题。
该错误基本上意味着 numpy 正在请求 269892000 但由于空间限制,它只能在 269188084 中读取/保存。
释放一些空间!
我遇到了类似的错误,显然是由于 savez 存储文件的临时文件夹空间不足造成的。根据此 Numpy 错误报告,需要设置一个解决方法TMPDIR=/path/to/bigger/drive/tmp
。就我而言,异常是 OSError 而不是那里报告的 IOError,我认为这是来自 Python 3 中的更改。看起来Numpy 1.12.0已修复。
归档时间: |
|
查看次数: |
4283 次 |
最近记录: |