Ñò [ÐKc@sdgZddkZddklZlZlZddkZeZddddgZddgZ hdd6dd 6dd 6dd 6Z defd „ƒYZ dS( tmemmapiÿÿÿÿN(tuint8tndarraytdtypetrtcsr+sw+treadonlyt copyonwritet readwritetwritecBsbeZdZdZeddd dd„Zd„Zd„Zd„Z d „Z d „Z d „Z RS( s' Create a memory-map to an array stored in a *binary* file on disk. Memory-mapped files are used for accessing small segments of large files on disk, without reading the entire file into memory. Numpy's memmap's are array-like objects. This differs from Python's ``mmap`` module, which uses file-like objects. Parameters ---------- filename : str or file-like object The file name or file object to be used as the array data buffer. dtype : data-type, optional The data-type used to interpret the file contents. Default is `uint8`. mode : {'r+', 'r', 'w+', 'c'}, optional The file is opened in this mode: +------+-------------------------------------------------------------+ | 'r' | Open existing file for reading only. | +------+-------------------------------------------------------------+ | 'r+' | Open existing file for reading and writing. | +------+-------------------------------------------------------------+ | 'w+' | Create or overwrite existing file for reading and writing. | +------+-------------------------------------------------------------+ | 'c' | Copy-on-write: assignments affect data in memory, but | | | changes are not saved to disk. The file on disk is | | | read-only. | +------+-------------------------------------------------------------+ Default is 'r+'. offset : int, optional In the file, array data starts at this offset. Since `offset` is measured in bytes, it should be a multiple of the byte-size of `dtype`. Requires ``shape=None``. The default is 0. shape : tuple, optional The desired shape of the array. By default, the returned array will be 1-D with the number of elements determined by file size and data-type. order : {'C', 'F'}, optional Specify the order of the ndarray memory layout: C (row-major) or Fortran (column-major). This only has an effect if the shape is greater than 1-D. The default order is 'C'. Methods ------- close Close the memmap file. flush Flush any changes in memory to file on disk. When you delete a memmap object, flush is called first to write changes to disk before removing the object. Notes ----- The memmap object can be used anywhere an ndarray is accepted. Given a memmap ``fp``, ``isinstance(fp, numpy.ndarray)`` returns ``True``. Memory-mapped arrays use the Python memory-map object which (prior to Python 2.5) does not allow files to be larger than a certain size depending on the platform. This size is always < 2GB even on 64-bit systems. Examples -------- >>> data = np.arange(12, dtype='float32') >>> data.resize((3,4)) This example uses a temporary file so that doctest doesn't write files to your directory. You would use a 'normal' filename. >>> from tempfile import mkdtemp >>> import os.path as path >>> filename = path.join(mkdtemp(), 'newfile.dat') Create a memmap with dtype and shape that matches our data: >>> fp = np.memmap(filename, dtype='float32', mode='w+', shape=(3,4)) >>> fp memmap([[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], dtype=float32) Write data to memmap array: >>> fp[:] = data[:] >>> fp memmap([[ 0., 1., 2., 3.], [ 4., 5., 6., 7.], [ 8., 9., 10., 11.]], dtype=float32) Deletion flushes memory changes to disk before removing the object: >>> del fp Load the memmap and verify data was stored: >>> newfp = np.memmap(filename, dtype='float32', mode='r', shape=(3,4)) >>> newfp memmap([[ 0., 1., 2., 3.], [ 4., 5., 6., 7.], [ 8., 9., 10., 11.]], dtype=float32) Read-only memmap: >>> fpr = np.memmap(filename, dtype='float32', mode='r', shape=(3,4)) >>> fpr.flags.writeable False Copy-on-write memmap: >>> fpc = np.memmap(filename, dtype='float32', mode='c', shape=(3,4)) >>> fpc.flags.writeable True It's possible to assign to copy-on-write array, but values are only written into the memory copy of the array, and not written to disk: >>> fpc memmap([[ 0., 1., 2., 3.], [ 4., 5., 6., 7.], [ 8., 9., 10., 11.]], dtype=float32) >>> fpc[0,:] = 0 >>> fpc memmap([[ 0., 0., 0., 0.], [ 4., 5., 6., 7.], [ 8., 9., 10., 11.]], dtype=float32) File on disk is unchanged: >>> fpr memmap([[ 0., 1., 2., 3.], [ 4., 5., 6., 7.], [ 8., 9., 10., 11.]], dtype=float32) Offset into a memmap: >>> fpo = np.memmap(filename, dtype='float32', mode='r', offset=16) >>> fpo memmap([ 4., 5., 6., 7., 8., 9., 10., 11.], dtype=float32) gYÀsr+itCcCsåddk}yt|}Wn>tj o2|tjotdttiƒƒ‚q[nXt|dƒo |}n(t||djodp|dƒ}|djo|djo td‚n|i d d ƒ|i ƒ} t |ƒ} | i } |djoC| |} | | o|i ƒtd ‚n| | } | f}n?t|tƒp |f}nd } x|D]}| |9} qnWt|| | ƒ} |djp|d joB| | jo5|i | d d ƒ|itd ƒƒ|iƒn|djo |i}n$|djo |i}n |i}tid djoM|||i}| |8} ||8}|i|iƒ| d|d|ƒ}n|i|iƒ| d|ƒ}ti||d| d|d|d|ƒ}||_|S(Niÿÿÿÿsmode must be one of %streadRRtbsw+sshape must be giveniis;Size of available data is not a multiple of data-type size.isr+itaccesstoffsetRtbuffertorder(ii(tmmaptmode_equivalentstKeyErrortvalid_filemodest ValueErrortkeysthasattrtfiletNonetseekttellt dtypedescrtitemsizetcloset isinstancettupletlongR tchrtflusht ACCESS_COPYt ACCESS_READt ACCESS_WRITEtsyst version_infotALLOCATIONGRANULARITYtfilenoRt__new__t_mmap(tsubtypetfilenameRtmodeRtshapeRRtfidtflentdescrt_dbytestbytestsizetktacctstarttmmtself((s7/usr/lib64/python2.6/site-packages/numpy/core/memmap.pyR+£sb   '            '       ( cCs-t|dƒo|i|_n d|_dS(NR,(RR,R(R;tobj((s7/usr/lib64/python2.6/site-packages/numpy/core/memmap.pyt__array_finalize__æscCs%|idj o|iiƒndS(sÜ Write any changes in the array to the file on disk. For further information, see `memmap`. Parameters ---------- None See Also -------- memmap N(R,RR#(R;((s7/usr/lib64/python2.6/site-packages/numpy/core/memmap.pyR#ìscCstidtƒ|iƒdS(s'This method is deprecated, use `flush`.sUse ``flush``.N(twarningstwarntDeprecationWarningR#(R;((s7/usr/lib64/python2.6/site-packages/numpy/core/memmap.pytsyncþscCs>|i|ijo'|iiƒ|iiƒd|_ndS(s>Close the memmap file. Only do this when deleting the object.N(tbaseR,R#RR(R;((s7/usr/lib64/python2.6/site-packages/numpy/core/memmap.pyt_closes  cCstidtƒdS(s$Close the memmap file. Does nothing.s2``close`` is deprecated on memmap arrays. Use delN(R>R?R@(R;((s7/usr/lib64/python2.6/site-packages/numpy/core/memmap.pyR s cCsL|i|ijo5y|iiƒWntj oqHX|iƒndS(N(R,RBRRRC(R;((s7/usr/lib64/python2.6/site-packages/numpy/core/memmap.pyt__del__s N( t__name__t __module__t__doc__t__array_priority__RRR+R=R#RARCRRD(((s7/usr/lib64/python2.6/site-packages/numpy/core/memmap.pyRsŽ B    ( t__all__R>tnumericRRRR'RRtwriteable_filemodesRR(((s7/usr/lib64/python2.6/site-packages/numpy/core/memmap.pyts