1. 程式人生 > >Python學習筆記-資料分析-Numpy05-資料的輸入輸出

Python學習筆記-資料分析-Numpy05-資料的輸入輸出

Numpy資料的輸入輸出

import numpy as np
import os
# 先設定一下工作路徑
# 在寫路徑的時候,如果直接拷貝路徑過來的話會所“\”的斜槓,我個人習慣前面加上r,防止對字串進行轉義。這裡就不需要將“\”改成“/”.
os.chdir(r'E:\Jupyter\test')
# 或者寫出os.chdir('E:/Jupyter/test')

一、讀取寫入.npy檔案

# 寫入資料
# 生成一個5×5的樣本陣列資料
ar = np.random.rand(5,5)
print(ar)
# 通過save()將5×5的樣本陣列資料寫入到“陣列資料.npy”並儲存在工作路徑中的。
# “陣列資料.npy”檔案不需要提前建,在寫入資料的時候會自動生成這個檔案。 np.save('陣列資料.npy', ar) # 也可以直接 np.save('E:/Jupyter/test/陣列資料.npy', ar)

執行結果如下:

[[7.99232778e-01 9.31545427e-02 3.74176522e-01 7.03289359e-01
  6.05700788e-01]
 [3.90490101e-01 1.29802148e-01 5.96018555e-01 9.04848282e-02
  3.64349850e-01]
 [7.13309810e-01 1.03519015e-01 4.85889934e-01 6.87127095e-01
5.33873670e-04] [8.16666459e-01 2.03710529e-01 1.45474337e-01 3.12620419e-01 6.29634204e-02] [9.01268578e-02 6.77623060e-01 9.92728770e-01 3.84306421e-01 7.50989661e-01]] # 大家可以將前面的工作路徑改成自己的,在執行這段程式碼後會在工作路徑下找到檔案。
# 讀取資料
# 通過load()將工作路徑中的“陣列資料.npy”讀取。
ar_load =np.load('陣列資料.npy')
print(ar_load)
# 也可以直接 np.load('E:/Jupyter/test/陣列資料.npy')

執行結果如下:

[[7.99232778e-01 9.31545427e-02 3.74176522e-01 7.03289359e-01
  6.05700788e-01]
 [3.90490101e-01 1.29802148e-01 5.96018555e-01 9.04848282e-02
  3.64349850e-01]
 [7.13309810e-01 1.03519015e-01 4.85889934e-01 6.87127095e-01
  5.33873670e-04]
 [8.16666459e-01 2.03710529e-01 1.45474337e-01 3.12620419e-01
  6.29634204e-02]
 [9.01268578e-02 6.77623060e-01 9.92728770e-01 3.84306421e-01
  7.50989661e-01]]

二、讀取寫入.txt文字檔案

# 讀取和寫入文字檔案
# 生成一個6×6的樣本陣列資料
ar_txt = np.random.rand(6,6)
print(ar_txt)

# 通過savetxt()來將6×6的樣本陣列資料寫入到“陣列資料.txt”文字檔案中並儲存在工作路徑中的。
# 該函式有多個引數fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# '
# delimiter=' '引數的作用是用什麼來分割資料;fmt='%.18e'引數的作用是用什麼格式來表示資料,預設是科學計數法

# 將資料寫入'陣列資料.txt'文字檔案,並以“,”分割同時用科學計數法表示。
np.savetxt('陣列資料.txt',ar_txt, delimiter=',')

# 將資料寫入''陣列資料——I.txt'文字檔案,並以“,”分割同時用整數表示。
# 由於生成的資料都是小於1的,所以檢視的時候肯定都是0.
np.savetxt('陣列資料——I.txt',ar_txt, delimiter=',', fmt='%i')

# 將資料寫入''陣列資料——F.txt'文字檔案,並以“,”分割同時資料保留3位小數。
np.savetxt('陣列資料——F.txt',ar_txt, delimiter=',', fmt='%.3f')

# 通過loadtxt()將工作路徑中的“陣列資料.txt”讀取
# 在讀取資料的時候,也要指定一下分割符
np.loadtxt('陣列資料.txt',delimiter=',')

執行結果如下:

[[0.8043981  0.08268975 0.42524424 0.70713905 0.96475372 0.10059658]
 [0.9528686  0.14934307 0.9349689  0.79620132 0.15017129 0.08868203]
 [0.88845941 0.38725704 0.52674631 0.15158202 0.99850853 0.04450516]
 [0.00697218 0.48143262 0.88944214 0.63331807 0.57034518 0.78410152]
 [0.80607746 0.18492333 0.04932255 0.37606581 0.7113698  0.30742463]
 [0.81378826 0.09006452 0.15985802 0.44949926 0.09712603 0.30912634]]
array([[0.8043981 , 0.08268975, 0.42524424, 0.70713905, 0.96475372,
        0.10059658],
       [0.9528686 , 0.14934307, 0.9349689 , 0.79620132, 0.15017129,
        0.08868203],
       [0.88845941, 0.38725704, 0.52674631, 0.15158202, 0.99850853,
        0.04450516],
       [0.00697218, 0.48143262, 0.88944214, 0.63331807, 0.57034518,
        0.78410152],
       [0.80607746, 0.18492333, 0.04932255, 0.37606581, 0.7113698 ,
        0.30742463],
       [0.81378826, 0.09006452, 0.15985802, 0.44949926, 0.09712603,
        0.30912634]])
# 由於生成的資料都是小於1的,所以檢視的時候肯定都是0。
np.loadtxt('陣列資料——I.txt',delimiter=',')

執行結果如下:

array([[0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0.]])
# 讀取的結果為保留3位小數的資料。
np.loadtxt('陣列資料——F.txt',delimiter=',')

執行結果如下:

array([[0.804, 0.083, 0.425, 0.707, 0.965, 0.101],
       [0.953, 0.149, 0.935, 0.796, 0.15 , 0.089],
       [0.888, 0.387, 0.527, 0.152, 0.999, 0.045],
       [0.007, 0.481, 0.889, 0.633, 0.57 , 0.784],
       [0.806, 0.185, 0.049, 0.376, 0.711, 0.307],
       [0.814, 0.09 , 0.16 , 0.449, 0.097, 0.309]])