最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

numpy數(shù)組之讀寫文件的實(shí)現(xiàn)

 更新時間:2023年02月20日 15:11:58   作者:wuliytTaotao  
本文主要介紹了numpy數(shù)組之讀寫文件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

將 numpy 數(shù)組存入文件,有多種文件類型可供選擇,對應(yīng)地就有不同的方法來讀寫。

下面我將介紹讀寫 numpy 的三類文件:

  • txt 或者 csv 文件
  • npy 或者 npz 文件
  • hdf5 文件

通過 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)

缺點(diǎn):

  • 只能保存一維和二維 numpy 數(shù)組,當(dāng) numpy 數(shù)組 a 有多維時,需要將其 a.reshape((a.shape[0], -1)) 后才能用這種方式保存。
  • 不能追加保存,即每次 np.savetxt() 都會覆蓋之前的內(nèi)容。

通過 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)

優(yōu)點(diǎn):

  • npy 文件可以保存任意維度的 numpy 數(shù)組,不限于一維和二維;
  • npy 保存了 numpy 數(shù)組的結(jié)構(gòu),保存的時候是什么 shape 和 dtype,取出來時就是什么樣的 shape 和 dtype。

缺點(diǎn):

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

讀寫 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,那么默認(rèn)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'])

優(yōu)點(diǎn):

  • npy 文件可以保存任意維度的 numpy 數(shù)組,不限于一維和二維;
  • npy 保存了 numpy 數(shù)組的結(jié)構(gòu),保存的時候是什么 shape 和 dtype,取出來時就是什么樣的 shape 和 dtype;
  • 可以同時保存多個 numpy 數(shù)組;
  • 可以指定保存 numpy 數(shù)組的 key,讀取的時候很方便,不會混亂。

缺點(diǎn):

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

通過 h5py 讀寫 hdf5 文件

優(yōu)點(diǎn):

  • 不限 numpy 數(shù)組維度,可以保持 numpy 數(shù)組結(jié)構(gòu)和數(shù)據(jù)類型;
  • 適合 numpy 數(shù)組很大的情況,文件占用空間??;
  • 可以通過 key 來訪問 dataset(可以理解為 numpy.array),讀取的時候很方便,不會混亂。
  • 可以不覆蓋原文件中含有的內(nèi)容。

簡單讀取

import numpy as np
import h5py

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.h5'
# 寫文件
h5f = h5py.File(filename, 'w')
h5f.create_dataset('a', data=a)
h5f.create_dataset('b', data=b)
h5f.close()

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

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

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

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

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

總結(jié)

  • csv 和 txt 只能用來存一維或二維 numpy 數(shù)組;
  • npy 用來存單個 numpy 數(shù)組,npz 可以同時存多個 numpy 數(shù)組,兩者都不限 numpy 維度,且都保持 numpy 數(shù)組的 shape 和 dtype,寫文件時若原文件存在只能覆蓋原文件內(nèi)容;
  • 當(dāng) numpy 數(shù)組很大時,最好使用 hdf5 文件,hdf5 文件相對更?。?/li>
  • 當(dāng) numpy 數(shù)組很大時,對整個 numpy 數(shù)組進(jìn)行運(yùn)算容易發(fā)生 MemoryError,那么此時可以選擇對 numpy 數(shù)組切片,將運(yùn)算后的數(shù)組保存到 hdf5 文件中,hdf5 文件支持切片索引。

References

當(dāng)Python遇上HDF5--性能優(yōu)化實(shí)戰(zhàn) -- 張玉騰
雜: PYTHON上數(shù)據(jù)儲存:推薦h5py -- Pony_s

到此這篇關(guān)于numpy數(shù)組之讀寫文件的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)numpy數(shù)組讀寫文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • python人工智能tensorflow常見損失函數(shù)LOSS匯總

    python人工智能tensorflow常見損失函數(shù)LOSS匯總

    這篇文章主要為大家介紹了python人工智能tensorflowf常見損失函數(shù)LOSS匯總,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python實(shí)現(xiàn)的簡單計算器功能詳解

    Python實(shí)現(xiàn)的簡單計算器功能詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)的簡單計算器功能,結(jié)合實(shí)例形式詳細(xì)分析了Python實(shí)現(xiàn)計算器功能的具體步驟、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • Qt自定義Plot實(shí)現(xiàn)曲線繪制的詳細(xì)過程

    Qt自定義Plot實(shí)現(xiàn)曲線繪制的詳細(xì)過程

    這篇文章主要介紹了Qt自定義Plot實(shí)現(xiàn)曲線繪制,包含arm觸摸屏多點(diǎn)觸控縮放(只支持兩點(diǎn)),實(shí)時曲線繪制,數(shù)據(jù)點(diǎn)根據(jù)繪制寬度優(yōu)化,跟蹤點(diǎn)數(shù)據(jù)獲取,雙坐標(biāo)等功能,需要的朋友可以參考下
    2021-11-11
  • django 消息框架 message使用詳解

    django 消息框架 message使用詳解

    這篇文章主要介紹了django 消息框架 message使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Python的字典和列表的使用中一些需要注意的地方

    Python的字典和列表的使用中一些需要注意的地方

    這篇文章主要介紹了Python的字典和列表的使用中一些需要注意的地方,字典和列表的使用是Python學(xué)習(xí)當(dāng)中的基本功,需要的朋友可以參考下
    2015-04-04
  • Django Form 實(shí)時從數(shù)據(jù)庫中獲取數(shù)據(jù)的操作方法

    Django Form 實(shí)時從數(shù)據(jù)庫中獲取數(shù)據(jù)的操作方法

    這篇文章主要介紹了Django Form 實(shí)時從數(shù)據(jù)庫中獲取數(shù)據(jù)的相關(guān)知識,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07
  • Django實(shí)現(xiàn)一對多表模型的跨表查詢方法

    Django實(shí)現(xiàn)一對多表模型的跨表查詢方法

    今天小編就為大家分享一篇Django實(shí)現(xiàn)一對多表模型的跨表查詢方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Pytorch釋放顯存占用方式

    Pytorch釋放顯存占用方式

    今天小編就為大家分享一篇Pytorch釋放顯存占用方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • PyCharm無法登陸Codeium的解決方法

    PyCharm無法登陸Codeium的解決方法

    Codeium插件可以自動建議、解釋代碼、生成注釋和根據(jù)注釋生成代碼等,本文主要介紹了PyCharm無法登陸Codeium的解決方法,感興趣的可以了解一下
    2023-11-11
  • 利用PyQT5日期控件制作一個小日歷

    利用PyQT5日期控件制作一個小日歷

    這篇文章主要介紹了利用PyQT5的日期控件制作一個小日歷,因?yàn)閜yqt5已經(jīng)自帶了相關(guān)的日期控件,只需要明白如何調(diào)用再加上比較個性化的功能,這個日歷的小控件就制作完成了。需要的可以參考一下
    2022-01-01

最新評論

临夏县| 崇义县| 铜鼓县| 时尚| 前郭尔| 朝阳区| 庄浪县| 莱芜市| 中宁县| 天祝| 安化县| 岢岚县| 武汉市| 巨鹿县| 兴安盟| 乌拉特中旗| 宝应县| 仪陇县| 三穗县| 博客| 松桃| 辽阳县| 陈巴尔虎旗| 扎鲁特旗| 凤阳县| 赣榆县| 迁安市| 鞍山市| 台东市| 平罗县| 曲松县| 云龙县| 阳山县| 武穴市| 阳曲县| 乐山市| 双鸭山市| 黄大仙区| 威远县| 叶城县| 全州县|