中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

numpy數組讀寫文件怎么實現

發布時間:2023-02-24 17:42:26 來源:億速云 閱讀:109 作者:iii 欄目:開發技術

本篇內容介紹了“numpy數組讀寫文件怎么實現”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

通過 numpy 讀寫 txt 或 csv 文件

import numpy as np

a = np.array(range(20)).reshape((4, 5))
print(a)

# 后綴改為 .txt 一樣
filename = 'data/a.csv'
# 寫文件
np.savetxt(filename, a, fmt='%d', delimiter=',')

# 讀文件
b = np.loadtxt(filename, dtype=np.int32, delimiter=',')
print(b)

缺點:

  • 只能保存一維和二維 numpy 數組,當 numpy 數組 a 有多維時,需要將其 a.reshape((a.shape[0], -1)) 后才能用這種方式保存。

  • 不能追加保存,即每次 np.savetxt() 都會覆蓋之前的內容。

通過 numpy 讀寫 npy 或 npz 文件

讀寫 npy 文件

import numpy as np

a = np.array(range(20)).reshape((2, 2, 5))
print(a)

filename = 'data/a.npy'
# 寫文件
np.save(filename, a)

# 讀文件
b = np.load(filename)
print(b)
print(b.shape)

優點:

  • npy 文件可以保存任意維度的 numpy 數組,不限于一維和二維;

  • npy 保存了 numpy 數組的結構,保存的時候是什么 shape 和 dtype,取出來時就是什么樣的 shape 和 dtype。

缺點:

  • 只能保存一個 numpy 數組,每次保存會覆蓋掉之前文件中存在的內容(如果有的話)。

讀寫 npz 文件

import numpy as np

a = np.array(range(20)).reshape((2, 2, 5))
b = np.array(range(20, 44)).reshape(2, 3 ,4)
print('a:\n', a)
print('b:\n', b)

filename = 'data/a.npz'
# 寫文件, 如果不指定key,那么默認key為'arr_0'、'arr_1',一直排下去。
np.savez(filename, a, b=b)

# 讀文件
c = np.load(filename)
print('keys of NpzFile c:\n', c.keys())
print("c['arr_0']:\n", c['arr_0'])
print("c['b']:\n", c['b'])

優點:

  • npy 文件可以保存任意維度的 numpy 數組,不限于一維和二維;

  • npy 保存了 numpy 數組的結構,保存的時候是什么 shape 和 dtype,取出來時就是什么樣的 shape 和 dtype;

  • 可以同時保存多個 numpy 數組;

  • 可以指定保存 numpy 數組的 key,讀取的時候很方便,不會混亂。

缺點:

  • 保存多個 numpy 數組時,只能同時保存,即 np.savez(filename, a, b=b)。每次保存會覆蓋掉之前文件中存在的內容(如果有的話)。

通過 h6py 讀寫 hdf5 文件

優點:

  • 不限 numpy 數組維度,可以保持 numpy 數組結構和數據類型;

  • 適合 numpy 數組很大的情況,文件占用空間小;

  • 可以通過 key 來訪問 dataset(可以理解為 numpy.array),讀取的時候很方便,不會混亂。

  • 可以不覆蓋原文件中含有的內容。

簡單讀取

import numpy as np
import h6py

a = np.array(range(20)).reshape((2, 2, 5))
b = np.array(range(20)).reshape((1, 4, 5))
print(a)
print(b)

filename = 'data/data.h6'
# 寫文件
h6f = h6py.File(filename, 'w')
h6f.create_dataset('a', data=a)
h6f.create_dataset('b', data=b)
h6f.close()

# 讀文件
h6f = h6py.File(filename, 'r')
print(type(h6f))
# 通過切片得到numpy數組
print(h6f['a'][:])
print(h6f['b'][:])
h6f.close()
通過切片賦值
import numpy as np
import h6py

a = np.array(range(20)).reshape((2, 2, 5))
print(a)

filename = 'data/a.h6'
# 寫文件
h6f = h6py.File(filename, 'w')
# 當數組a太大,需要切片進行操作時,可以不直接對h6f['a']進行初始化;
# 當之后不需要改變h6f['a']的shape時,可以省略maxshape參數
h6f.create_dataset('a', shape=(2, 2, 5), maxshape=(None, 2, 5), dtype=np.int32, compression='gzip')
for i in range(2):
    # 采用切片的形式賦值
    h6f['a'][i] = a[i]
h6f.close()

# 讀文件
h6f = h6py.File(filename, 'r')
print(type(h6f))
print(h6f['a'])
# 通過切片得到numpy數組
print(h6f['a'][:])

同一個 hdf5 文件可以創建多個 dataset,讀取的時候按照 key 來即可。

“numpy數組讀寫文件怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

博白县| 盐城市| 黄龙县| 招远市| 益阳市| 涪陵区| 陆河县| 平陆县| 梁山县| 商河县| 甘孜县| 喀喇沁旗| 元朗区| 团风县| 佳木斯市| 吴旗县| 宣城市| 博罗县| 永和县| 荔波县| 电白县| 泊头市| 汶上县| 莱州市| 鲁甸县| 叙永县| 双桥区| 灵山县| 大埔县| 郎溪县| 梅河口市| 白山市| 庄河市| 资讯| 邯郸县| 二连浩特市| 汶上县| 麦盖提县| 大厂| 东方市| 闽清县|