B >> 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) >>> fp.filename == path.abspath(filename) True 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) gYzr+rNCc Csddl}ddl}y t|}Wn4tk rP|tkrLtdtttYnXt|drf|} d} nFt |r| |dkr~dp|d} d} nt ||dkrdp|d} d} |d kr|dkrtd | dd | } t |} | j} |dkr"| |}|| r| td || }|f}n.t|ts4|f}d }x|D]}||9}q>Wt||| }|d ks~|dkr| |kr| |d d| d| |dkr|j}n|dkr|j}n|j}|||j}||8}||}|j| |||d}tj||| |||d}||_||_||_t|trB|j !||_"nHt |rX|#|_"n2t|drt|j$tr|j !|j$|_"nd|_"| r| |S)Nrzmode must be one of %sreadFrr bTzw+zshape must be givenz?Size of available data is not a multiple of the data-type size.rzr+)accessoffset)rbufferrordername)%mmapZos.pathmode_equivalentsKeyErrorvalid_filemodes ValueErrorlistkeyshasattrr openseektell dtypedescritemsizeclose isinstancetupler rflushZ ACCESS_COPYZ ACCESS_READZ ACCESS_WRITEZALLOCATIONGRANULARITYfilenor__new___mmaprmoder pathabspathfilenameZresolver)Zsubtyper2rr/rshaperrosZfidZown_fileZflenZdescrZ_dbytesbytessizekZaccstartZ array_offsetZmmselfr:D/opt/alt/python37/lib64/python3.7/site-packages/numpy/core/memmap.pyr-s                zmemmap.__new__cCsTt|dr8t||r8|j|_|j|_|j|_|j|_nd|_d|_d|_d|_dS)Nr.)r"npZmay_share_memoryr.r2rr/)r9objr:r:r;__array_finalize__!s zmemmap.__array_finalize__cCs$|jdk r t|jdr |jdS)z Write any changes in the array to the file on disk. For further information, see `memmap`. Parameters ---------- None See Also -------- memmap Nr+)baser"r+)r9r:r:r;r+-sz memmap.flushcsHtt|||}||ks&t|tk r*|S|jdkr<|dS|tjS)Nr:)superr __array_wrap__typer3viewr<r)r9Zarrcontext) __class__r:r;rA?s  zmemmap.__array_wrap__cs6tt||}t|tkr2|jdkr2|jtdS|S)N)rB)r@r __getitem__rBr.rCr)r9indexZres)rEr:r;rFNs zmemmap.__getitem__)N) __name__ __module__ __qualname____doc__Z__array_priority__rr-r>r+rArF __classcell__r:r:)rEr;r s3V )Z __future__rrrZnumpyr<ZnumericrrrZ numpy.compatr r r __all__r&rZwriteable_filemodesrr r:r:r:r;s