Numpy數組數據文件的讀寫


一、引言

讀寫數據文件的重要性就不必多說了。

二、讀取列表形式數據的文件

1、我們寫幾行CSV格式(列表形式,兩值之間逗號隔開)的數據。

id,height,age
1,175,20
2,168,18
3,177,30
4,142,12

使用genfromtxt()函數讀取數據。接收三個參數:文件名,分隔符,是否有列標題

In [4]: a = np.genfromtxt('test.csv',delimiter=',',names=True)

In [5]: a
Out[5]:
array([( 1.,  175.,  20.), ( 2.,  168.,  18.), ( 3.,  177.,  30.),
       ( 4.,  142.,  12.)],
      dtype=[('id', '<f8'), ('height', '<f8'), ('age', '<f8')])

這個函數的包含兩層循環:第一層循環每一行,第二層循環將每一行中的多個值分開后轉化,一次插入所創建的數組。優點是能夠處理文件中缺失的數據(Nan)。

2、我們試圖刪除幾個元素看看

id,height,age
1,175,
2,168,18
,177,30
4,,12
In [6]: a = np.genfromtxt('test.csv',delimiter=',',names=True)

In [7]: a
Out[7]:
array([(  1.,  175.,  nan), (  2.,  168.,  18.), ( nan,  177.,  30.),
       (  4.,   nan,  12.)],
      dtype=[('id', '<f8'), ('height', '<f8'), ('age', '<f8')])

 

可見,genfromtxt()函數將缺失的數據填充為nan值(應該是no a number)

3、獲取某行或者某列

In [8]: a[0]
Out[8]: ( 1.,  175.,  nan)

In [9]: a['height']
Out[9]: array([ 175.,  168.,  177.,   nan])

三、二進制文件讀寫

save()已二進制格式保存數據,參數:文件名(不用后綴),數據。

load()從二進制文件讀取數據,參數:文件名(帶后綴)

1.執行sava()后,在本目錄創建了my_data.npy二進制文件

In [10]: data = np.random.random((3,3))

In [11]: data
Out[11]:
array([[ 0.35264296,  0.81619681,  0.24089159],
       [ 0.31230919,  0.14782997,  0.53526203],
       [ 0.5505135 ,  0.64876637,  0.17538648]])

In [12]: np.save('my_data',data)

2、二進制文件數據讀取,以文件名作為參數,並帶上.npy擴展名

In [13]: np.load('my_data.npy')
Out[13]:
array([[ 0.35264296,  0.81619681,  0.24089159],
       [ 0.31230919,  0.14782997,  0.53526203],
       [ 0.5505135 ,  0.64876637,  0.17538648]])

 


免責聲明!

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



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