我正在使用大矩阵,所以我使用的是NumPy的memmap.但是,我收到一个错误,因为显然memmap使用的文件描述符没有被关闭.
import numpy
import tempfile
counter = 0
while True:
temp_fd, temporary_filename = tempfile.mkstemp(suffix='.memmap')
map = numpy.memmap(temporary_filename, dtype=float, mode="w+", shape=1000)
counter += 1
print counter
map.close()
os.remove(temporary_filename)
Run Code Online (Sandbox Code Playgroud)
根据我的理解,当调用close()方法时,memmap文件将被关闭.但是,上面的代码不能永远循环,因为它最终抛出" [Errno 24]太多打开文件 "错误:
1016
1017
1018
1019
Traceback (most recent call last):
File "./memmap_loop.py", line 11, in <module>
File "/usr/lib/python2.5/site-packages/numpy/core/memmap.py", line 226, in __new__
EnvironmentError: [Errno 24] Too many open files
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/apport_python_hook.py", line 38, in apport_excepthook
ImportError: No module named packaging_impl
Original exception …Run Code Online (Sandbox Code Playgroud) 没有if子句有没有办法做到以下几点?
我正在使用pupynere读取一组netcdf文件,并希望构建一个带有numpy附加的数组.有时输入数据是多维的(见下面的变量"a"),有时是一维("b"),但第一维中的元素数总是相同的(下例中的"9").
> import numpy as np
> a = np.arange(27).reshape(3,9)
> b = np.arange(9)
> a.shape
(3, 9)
> b.shape
(9,)
Run Code Online (Sandbox Code Playgroud)
这按预期工作:
> np.append(a,a, axis=0)
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8],
[ 9, 10, 11, 12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23, 24, 25, 26],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8],
[ 9, 10, 11, 12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, …Run Code Online (Sandbox Code Playgroud)