第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Pytables:可以減小 Appended Earray 的大小嗎?

Pytables:可以減小 Appended Earray 的大小嗎?

Helenr 2023-06-06 17:36:37
在我的例子中,輸出文件 (earray.h5) 的大小很大。有沒(méi)有辦法附加數(shù)據(jù),使輸出文件不那么大?例如,在我的例子中(見(jiàn)下面的鏈接)一個(gè) 13GB 的輸入文件(dset_1:2.1E8 x 4 和 dset_2:2.1E8 x 4)給出了一個(gè)只有一列(2.5E10 x 1)的 197 GB 輸出文件。所有元素都是 float64。我想減小輸出文件的大小,這樣腳本的執(zhí)行速度就不會(huì)受到影響,并且輸出文件的讀取也可以高效地供以后使用。沿著列而不只是行保存數(shù)據(jù)有幫助嗎?對(duì)此有什么建議嗎?下面給出的是一個(gè) MWE。# no. of chunks from dset-1 and dset-2 in inp.h5loop_1 = 40loop_2 = 20?# save to disk after these many rowsapp_len = 10**6?# **********************************************#? ? ? ?Grabbing input.h5 file# **********************************************filename = 'inp.h5'f2 = h5py.File(filename, 'r')chunks1 = f2['dset_1']chunks2 = f2['dset_2']shape1, shape2 = chunks1.shape[0], chunks2.shape[0]f1 = tables.open_file("table.h5", "w")a = f1.create_earray(f1.root, "dataset_1", atom=tables.Float64Atom(), shape=(0, 4))size1 = shape1//loop_1size2 = shape2//loop_2# ***************************************************#? ? ? ?Grabbing chunks to process and append data# ***************************************************for c in range(loop_1):? ? h = c*size1? ? # grab chunks from dset_1 of inp.h5??? ? chunk1 = chunks1[h:(h + size1)]? ? for d in range(loop_2):? ? ? ? g = d*size2? ? ? ? chunk2 = chunks2[g:(g + size2)] # grab chunks from dset_2 of inp.h5?? ? ? ? r1 = chunk1.shape[0]? ? ? ? r2 = chunk2.shape[0]? ? ? ? left, right = 0, 0? ? ? ? for j in range(r1):? # grab col.2 values from dataset-1? ? ? ? ? ? e1 = chunk1[j, 1]? ? ? ? ? ? #...Algaebraic operations here to output a row containing 4 float64? ? ? ? ? ? #...append to a (earray) when no. of rows reach a million? ? ? ? del chunk2? ? del chunk1f2.close()
查看完整描述

1 回答

?
HUH函數(shù)

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊

這是一個(gè)“僅”寫(xiě)入 1.5e6 行的簡(jiǎn)單示例。我沒(méi)有做任何事情來(lái)優(yōu)化非常大的文件的性能。您正在創(chuàng)建一個(gè)非常大的文件,但沒(méi)有說(shuō)明有多少行(顯然超過(guò) 10**6)。以下是根據(jù)另一個(gè)線程中的評(píng)論提出的一些建議。

我推薦的區(qū)域(3 個(gè)與 PyTables 代碼相關(guān),2 個(gè)基于外部使用)。

PyTables 代碼建議:

  1. 創(chuàng)建文件時(shí)啟用壓縮(filters=創(chuàng)建文件時(shí)添加參數(shù))。從 開(kāi)始tb.Filters(complevel=1)。

  2. expectedrows=.create_tables()(根據(jù) PyTables 文檔,“這將優(yōu)化 HDF5 B 樹(shù)和使用的內(nèi)存量”)中定義參數(shù)。默認(rèn)值設(shè)置在tables/parameters.py(查找 EXPECTED_ROWS_TABLE;在我的安裝中它只有 10000)。如果您要?jiǎng)?chuàng)建 10**6(或更多)行,我建議您將此設(shè)置為更大的值。

  3. setting 有一個(gè)附帶的好處expectedrows=。如果你沒(méi)有定義 chunkshape,'一個(gè)合理的值是根據(jù) expectedrows 參數(shù)計(jì)算的'。檢查使用的值。這不會(huì)減小創(chuàng)建的文件大小,但會(huì)提高 I/O 性能。

如果您在創(chuàng)建文件時(shí)沒(méi)有使用壓縮,則有 2 種方法可以壓縮現(xiàn)有文件:

外部實(shí)用程序:

  • PyTables 實(shí)用程序ptrepack- 針對(duì) HDF5 文件運(yùn)行以創(chuàng)建新文件(對(duì)于從未壓縮到壓縮,反之亦然)。它隨 PyTables 一起提供,并在命令行上運(yùn)行。

  • HDF5 實(shí)用程序h5repack- 與ptrepack.?它隨 HDF Group 的 HDF5 安裝程序一起提供。

文件壓縮需要權(quán)衡取舍:它減小了文件大小,但增加了訪問(wèn)時(shí)間(降低了 I/O 性能)。我傾向于使用經(jīng)常打開(kāi)的未壓縮文件(以獲得最佳 I/O 性能)。然后完成后,我將其轉(zhuǎn)換為壓縮格式以進(jìn)行長(zhǎng)期存檔。您可以繼續(xù)以壓縮格式使用它們(API 處理干凈)。


查看完整回答
反對(duì) 回復(fù) 2023-06-06
  • 1 回答
  • 0 關(guān)注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)