Numpyファイルアクセス

7421 ワード

Numpyは、ディスク上のテキストデータまたはバイナリデータを読むことができます.
回転:http://blog.csdn.net/sherrylml/article/details/51494052
配列をバイナリ形式でディスクに保存します.
np.loadとnp.saveはディスク配列データを読み書きする2つの主要関数であり、デフォルトでは、配列は非圧縮の元のバイナリ形式で拡張子npyというファイルに保存されています.
>>> import numpy as np
A = np.arange(15).reshape(3,5)
>>> A
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> np.save("A.npy",A)   #             .npy,          。
>>> B=np.load("A.npy")
>>> B
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
  • 1
  • ,
  • 4
  • 5
  • ,
  • ,
  • 8
  • 9,
  • 10
  • 11
  • 1
  • ,
  • 4
  • 5
  • ,
  • ,
  • 8
  • 9,
  • 10
  • 11
  • 注:Numpy専用のバイナリフォーマットを保存しておけば、notepad++などで開けて見ることはできません.このような方式は保存されたファイルの内容を見る必要がない場合に使用することを推奨します.
    np.savez
    複数の配列を一つのファイルに保存する場合は、numpy.savez関数を使用できます.savez関数の最初のパラメータはファイル名です.その後のパラメータは保存が必要な配列です.キーワードパラメータを使って配列の名前を付けてもいいです.キーワード以外のパラメータを伝える配列は自動的にarr gauと名付けられます.0,アルアル1,….savez関数が出力するのは圧縮ファイル(拡張子はnpz)で、各ファイルはsave関数が保存するnpyファイルで、ファイル名は配列名に対応します.ロード関数はnpzファイルを自動的に識別し、辞書のようなオブジェクトを返します.配列名をキーワードとして配列の内容を取得できます.
    >>> C=np.array([1,0,1,0])
    >>> np.savez("files.npz",A,B,C_array=C)
    >>> D=np.load("files.npz")
    >>> D['arr_0']
    array([[ 0,  1,  2,  3,  4],
           [ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14]])
    >>> D['arr_1']
    array([[ 0,  1,  2,  3,  4],
           [ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14]])
    >>> D['arr_2']
    Traceback (most recent call last):
      File "", line 1, in <module>
      File "D:\Python3\lib\site-packages
    umpy\lib
    pyio.py"
    , line 255, in __getitem__ raise KeyError("%s is not a file in the archive" % key) KeyError: 'arr_2 is not a file in the archive' >>> D['C_array'] array([1, 0, 1, 0])
  • 1
  • ,
  • 4
  • 5
  • ,
  • ,
  • 8
  • 9,
  • 10
  • 11
  • 15
  • ,
  • ,
  • ,
  • ,
  • 1
  • ,
  • 4
  • 5
  • ,
  • ,
  • 8
  • 9,
  • 10
  • 11
  • 15
  • ,
  • ,
  • ,
  • ,
  • 解凍ソフトでfiles.npzファイルを開くと、その中に三つのファイルがあります.0.npy、arr_1.npy、C_array.npyは、それぞれ配列A,B,Cの内容が保存されています.
    テキストファイルにアクセス
    np.loadtxtとnp.savetxtは1次元と2次元の配列を読み書きできます.  各種のセパレータ、特定の列に対する変換器関数、スキップが必要な行数なども指定できます.
    np.loadtxt(FILENAME, dtype=int, delimiter=' ')
    np.savetxt("a.txt", a, fmt="%d", delimiter=",")
    
    例:
    >>> a=np.arange(0,10).reshape(2,-1)
    >>> a
    array([[0, 1, 2, 3, 4],
           [5, 6, 7, 8, 9]])
    >>> np.savetxt("a.txt",a) #    '%.18e'      ,     
    >>> np.loadtxt("a.txt")
    array([[ 0.,  1.,  2.,  3.,  4.],
           [ 5.,  6.,  7.,  8.,  9.]])
  • 1
  • ,
  • 4
  • 5
  • ,
  • ,
  • 8
  • 1
  • ,
  • 4
  • 5
  • ,
  • ,
  • 8
  • >>> a=np.arange(0,10,0.5).reshape(4,-1)
    >>> a
    array([[ 0. ,  0.5,  1. ,  1.5,  2. ],
           [ 2.5,  3. ,  3.5,  4. ,  4.5],
           [ 5. ,  5.5,  6. ,  6.5,  7. ],
           [ 7.5,  8. ,  8.5,  9. ,  9.5]])
    >>> np.savetxt("a.txt",a,fmt="%d",delimiter=",")#       ,     
    >>> np.loadtxt("a.txt",delimiter=",")#load          
    array([[ 0.,  0.,  1.,  1.,  2.],
           [ 2.,  3.,  3.,  4.,  4.],
           [ 5.,  5.,  6.,  6.,  7.],
           [ 7.,  8.,  8.,  9.,  9.]])