Numpy---4.數組的存儲和加載


一、二進制

1.numpy.save()

numpy.save(file, arr, allow_pickle=True, fix_imports=True)

功能:將數組以二進制的形式存儲到文件中

參數:

  1. file文件名或者文件對象。如果是個文件名,則會自動添加后綴.npy如果沒有該后綴的話
  2. arr被存儲的數組
  3. allow_pickle一個布爾值,如果為True,則使用Python pickle。有時候為了安全性和可移植性而不使用pickle
  4. fix_imports用於python3的數組importpython2的情形

2.numpy.savez()

numpy.savez(file, *args, **kwds)

功能:將多個數組以二進制的形式存儲到文件中。

參數:

  1. file文件名或者文件對象。如果是個文件名,則會自動添加后綴.npz如果沒有該后綴的話

  2. args被存儲的數組。這些數組的名字將被自動命名為arr_0/arr_1/...;

    1. 如果沒有名字,則完全無法知曉這些數組的區別

  3. kwds將被存儲的數組,這些關鍵字參數就是鍵的名字

3.numpy.load()

numpy.load(file, mmap_mode=None, allow_pickle=True, fix_imports=True, encoding='ASCII')

功能:將二進制文件中讀取數組

參數:

  1. file一個文件名或者文件對象。它存放着數組
  2. mmap_mode如果不是None,則memory-map該文件。此時對數組的修改會同步到文件上。當讀取大文件的一小部分時很有用,因為它不必一次讀取整個文件。可選值為None/'r+'/'r'/'w+'/'c'
  3. allow_pickle一個布爾值,如果為True,則使用Python pickle。有時候為了安全性和可移植性而不使用pickle
  4. fix_imports用於python3的數組importpython2的情形
  5. encoding只用於python2,讀取python2字符串。

該函數返回一個數組,元組,或者字典(當二進制文件時savez生成時)

二、文本文件

1.numpy.genfromtxt()

numpy.genfromtxt(fname, dtype=<type 'float'>, comments='#', delimiter=None,skip_header=0, skip_footer=0, converters=None, missing_values=None,filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None)

功能 :從文本文件中加載數組,通用性很強,可以處理缺失數據的情況。

loadtxt()函數只能處理數據無缺失的情況。

參數:

  1. fname指定的數據源。可以為:

    1. 文件名字符串。如果后綴為gz或者bz2,則首先自動解壓縮
    2. 文件對象/字符串列表/其他可迭代對象:這些可迭代對象必須返回字符串(該字符串被視為一行)
  2. dtype數組的元素類型,可以提供一個序列,指定每列的數據類型

  3. comments一個字符串,其中每個字符都指定了注釋行的第一個字符。注釋行整體被放棄

  4. delimiter指定了分隔符。可以為:

    1. 字符串:指定分隔符。默認情況下,所有連續的空白符被認為是分隔符
    2. 一個整數:指定了每個字段的寬度
    3. 一個整數序列:依次給出了各個字段的寬度
  5. skiprows被廢棄,推薦使用skip_header

  6. skip_header一個整數,指定跳過文件頭部多少行

  7. skip_footer一個整數,指定跳過文件尾部多少行

  8. converters用於列數據的格式轉換。你可以指定一個字典,字典的鍵就是列號:

    • converters={0: lambda s: float(s or 0), 1: lambda s: int(s or 199),... }  
  9. missing被廢棄,推薦使用missing_values

  10. missing_values:指定缺失數據。你可以自定一個字典,字典的鍵就是缺失位置的字符串,值就是缺失值。比如你可以指定NNNN為缺失數據,此時遇到NNNN時,numpy解析為np.nan

  11. filling_values指定缺失值的填充值。即解析到np.nan時,用什么值代替它

  12. usecols一個序列,指定了要讀取那些列(列從0 計數)

  13. names

    1. 如果為True,則在skip_header行之后第一行被視作標題行,將從該行讀取每個字段的name
    2. 如果為序列或者一個以冒號分隔的字符串,則使用它作為各個字段的name
    3. 如果為None,則每個dtype字段的名字被使用
  14. excludelist一個序列,給出了需要排除的字段的name

  15. deletecharsA string combining invalid characters that must be deleted from the names

  16. defaultfmtA format used to define default field names, such as “f%i” or “f_%02i”.

  17. autostrip一個布爾值。如果為True,則自動移除數據中的空白符

  18. replace_space一個字符。如果變量名中有空白符,如user name,則使用該字符來替代空白符。默認為_,即變量名轉換為user_name

  19. case_sensitive一個布爾值或者字符串。如果為True,則字段名是大小寫敏感的。如果為False或者'upper',則字段名轉換為大寫字符。如果為'lower'則轉換為小寫字符。

  20. unpack:If True, the returned array is transposed

  21. usemask:If True, return a masked array

  22. loose:If True, do not raise errors for invalid values

  23. invalid_raise:If True, an exception is raised if an inconsistency is detected in the number of columns. If False, a warning is emitted and the offending lines are skipped

  24. max_rows:一個整數,指定讀取的最大行數。

2.numpy.loadtxt()

numpy.loadtxt(fname, dtype=<type 'float'>, comments='#', delimiter=None,converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)

功能:作用與genfromtxt相同,但是它只能用於規則比較簡單的文件,並且它的解析速度更快。

參數:

  1. ndim一個整數。指定結果數組必須擁有不少於ndim維度。
  2. 其他參數參考genfromtxt

3.numpy.fromstring()

numpy.fromstring(string, dtype=float, count=-1, sep='')

功能:raw binary或者字符串中創建一維數組。

參數:

  1. string一個字符串,給出數據源
  2. dtype指定數據類型
  3. count一個整數。從數據源(一個字符串)中讀取指定數量的數值類型的數值。如果為負數,則為數據長度加上這個負值
  4. sep如果未提供或者為空字符串,則string被認為是二進制數據。如果提供了一個非空字符串,則給出了分隔符。

4.numpy.savetxt()

numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='',footer='', comments='# ')

功能:存儲到文本文件

參數:

  1. fname給出了文件名或者file對象。如果為.gz后綴,則自動壓縮

  2. X被存儲的數組

  3. fmt一個字符串或者一個字符串序列,指定存儲格式。一個字符串可以指定所有的格式化方式;一個字符串序列可以對每列指定一個格式化方式。如果是虛數,你可以通過%.4e%+.4j的方式指定實部和虛部。

  4. delimiter一個字符串,用於分隔符,分隔每個列

  5. newline一個字符串,指定換行符

  6. header一個字符串。它會寫到文件的首行

  7. footer一個字符串。它會寫到文件的末尾

  8. comments一個字符串。它會寫到文件的中間,並且用注釋符作為行首,如#

  9. 注:fmt分隔字符串的格式為%[flag]width[.precision]specifier。其中:
  10. flags可以為'-'(左對齊)、'+'(右對齊)、'0'(左側填充0)

  11. width最小的位寬。

  12. precision

    1. 對於specifier=d/i/o/x,指定最少的數字個數
    2. 對於specifier=e/E/f,指定小數點后多少位
    3. 對於specifier=g/G,指定最大的significant digits
    4. 對於specifier=s,指定最大的字符數量
  13. specifier指定格式化類型。c(字符)、d/i(帶符號整數)、e/E(科學計數法)、f(浮點數)、g/G(使用shorter e/E/f)、o(帶符號八進制)、s(字符串)、u(無符號整數)、x/X(無符號十六進制)

5.ndarray.tofile()

ndarray.tofile(fid, sep="", format="%s")

功能:保存到文件中

參數:

  1. fid一個file對象或者文件名
  2. sep一個字符串,指定分隔符。如果為空或者空字符串,則按照二進制的方式寫入,等價於file.write(a.tobytes())
  3. format一個字符串,指定了數值的格式化方式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM