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

numpy數(shù)組之存取文件的實(shí)現(xiàn)示例

 更新時(shí)間:2019年05月24日 14:45:13   作者:wuliytTaotao  
這篇文章主要介紹了numpy數(shù)組之存取文件的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

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

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

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

通過(guò) 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 有多維時(shí),需要將其 a.reshape((a.shape[0], -1)) 后才能用這種方式保存。
  • 不能追加保存,即每次 np.savetxt() 都會(huì)覆蓋之前的內(nèi)容。

通過(guò) 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),保存的時(shí)候是什么 shape 和 dtype,取出來(lái)時(shí)就是什么樣的 shape 和 dtype。

缺點(diǎn):

  • 只能保存一個(gè) numpy 數(shù)組,每次保存會(huì)覆蓋掉之前文件中存在的內(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),保存的時(shí)候是什么 shape 和 dtype,取出來(lái)時(shí)就是什么樣的 shape 和 dtype;
  • 可以同時(shí)保存多個(gè) numpy 數(shù)組;
  • 可以指定保存 numpy 數(shù)組的 key,讀取的時(shí)候很方便,不會(huì)混亂。

缺點(diǎn):

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

通過(guò) h5py 讀寫 hdf5 文件

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

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

簡(jiǎn)單讀取

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))
# 通過(guò)切片得到numpy數(shù)組
print(h5f['a'][:])
print(h5f['b'][:])
h5f.close()

通過(guò)切片賦值

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)行操作時(shí),可以不直接對(duì)h5f['a']進(jìn)行初始化;
# 當(dāng)之后不需要改變h5f['a']的shape時(shí),可以省略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'])
# 通過(guò)切片得到numpy數(shù)組
print(h5f['a'][:])

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

總結(jié)

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python 創(chuàng)建守護(hù)進(jìn)程的示例

    Python 創(chuàng)建守護(hù)進(jìn)程的示例

    這篇文章主要介紹了Python 創(chuàng)建守護(hù)進(jìn)程的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09
  • 詳解Python3的TFTP文件傳輸

    詳解Python3的TFTP文件傳輸

    本篇內(nèi)容給大家詳細(xì)講述了Python3的TFTP文件傳輸?shù)南嚓P(guān)知識(shí)點(diǎn),有需要的朋友可以參考下。
    2018-06-06
  • 利用Pygame制作躲避僵尸游戲

    利用Pygame制作躲避僵尸游戲

    本文參考了神廟逃亡,利用Pygame實(shí)現(xiàn)一個(gè)人躲避僵尸的小游戲,主要的是精靈、精靈組之間相撞、相交的處理,感興趣的可以了解一下
    2022-05-05
  • python 中的列表生成式、生成器表達(dá)式、模塊導(dǎo)入

    python 中的列表生成式、生成器表達(dá)式、模塊導(dǎo)入

    這篇文章主要介紹了python中的列表生成式、生成器表達(dá)式、模塊導(dǎo)入 ,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • python基于SMTP發(fā)送QQ郵件

    python基于SMTP發(fā)送QQ郵件

    這篇文章主要為大家詳細(xì)介紹了python基于SMTP發(fā)送QQ郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Python操作Word文檔7種方法的實(shí)現(xiàn)與對(duì)比(史上最全)

    Python操作Word文檔7種方法的實(shí)現(xiàn)與對(duì)比(史上最全)

    在Python中操作Word文檔是一項(xiàng)常見的任務(wù),特別是在辦公自動(dòng)化和數(shù)據(jù)處理領(lǐng)域,本文將詳細(xì)總結(jié)和對(duì)比幾種常用的Python庫(kù)和方法,有需要的可以了解下
    2025-03-03
  • PyQt5超詳細(xì)入門級(jí)教程(推薦!)

    PyQt5超詳細(xì)入門級(jí)教程(推薦!)

    PyQt5是Python編程語(yǔ)言的一個(gè)模塊,它提供了一種在Python中使用Qt庫(kù)的方式,下面這篇文章主要給大家介紹了關(guān)于PyQt5超詳細(xì)入門級(jí)教程的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • Python中的raise關(guān)鍵字詳解

    Python中的raise關(guān)鍵字詳解

    這篇文章主要介紹了Python中的raise關(guān)鍵字,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 基于PyQt5制作數(shù)據(jù)處理小工具

    基于PyQt5制作數(shù)據(jù)處理小工具

    這篇文章主要和大家介紹了如何利用Python中的PyQt5模塊制作一個(gè)數(shù)據(jù)處理小工具,可以實(shí)現(xiàn)根據(jù)每個(gè)Excel數(shù)據(jù)文件里面的Sheet批量將數(shù)據(jù)文件合并成為一個(gè)匯總后的Excel數(shù)據(jù)文件,需要的可以參考一下
    2022-03-03
  • python檢查URL是否正常訪問(wèn)的小技巧

    python檢查URL是否正常訪問(wèn)的小技巧

    檢查一個(gè)URL是否正常很容易,如果檢查2000個(gè)URL,或者是大批量的URL怎么辦?這篇文章就為大家介紹了python檢查URL是否正常訪問(wèn)的小技巧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02

最新評(píng)論

新丰县| 铁岭市| 邢台县| 维西| 扶绥县| 策勒县| 保定市| 和政县| 平江县| 工布江达县| 桑日县| 曲周县| 磴口县| 探索| 柳江县| 南乐县| 集贤县| 海安县| 临西县| 蕉岭县| 电白县| 扎赉特旗| 蒙山县| 临夏市| 安宁市| 凤庆县| 临沧市| 五大连池市| 贵溪市| 花莲市| 花垣县| 梅河口市| 滕州市| 明水县| 中宁县| 南丰县| 台州市| 商丘市| 昌图县| 开江县| 商水县|