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

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

有沒有辦法在 h5py 中一次獲取所有組中的數(shù)據(jù)集?

有沒有辦法在 h5py 中一次獲取所有組中的數(shù)據(jù)集?

我將數(shù)據(jù)存儲(chǔ)在 .h5 中。我使用以下代碼來顯示組名,并調(diào)用其中一個(gè)組 (Event_[0]) 來查看其中的內(nèi)容:with h5py.File(data_path, 'r') as f:    ls = list(f.keys())    print('List of datasets: \n', ls)    data = f.get('group_1')    dataset1 = np.array(data)    print('Shape of dataset1: \n', dataset1.shape)    f.close()它工作正常,但我有 2000 個(gè)組,每個(gè)組有一個(gè)數(shù)據(jù)集。如何避免為每個(gè)組編寫相同的代碼?有沒有辦法得到('所有團(tuán)體')?編輯:再舉一個(gè)例子:我用f['Event_[0]'][()]看一組。這也可以應(yīng)用于多個(gè)組嗎?
查看完整描述

2 回答

?
一只名叫tom的貓

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

只需迭代鍵列表:


with h5py.File(data_path, 'r') as f:

    alist = []

    ls = list(f.keys())

    print('List of datasets: \n', ls)

    for key in ls:

         group = f.get(key)

         dataset = group.get(datasetname)[:]

         print('Shape of dataset: \n', dataset.shape)

         alist.append(dataset)

    # don't need f.close() in a with

沒有allgroups; 有 iter 和 visit 方法,但它們最終做同樣的事情 - 對(duì)于文件中的每個(gè)組,獲取所需的數(shù)據(jù)集。 h5py文檔應(yīng)該是完整的,沒有隱藏的方法。這visit是遞歸的,類似于用于訪問目錄和文件的 Python OS 功能。


在h5py文件和組中表現(xiàn)得像 Python dicts。它是行為類似于numpy數(shù)組的數(shù)據(jù)集。


查看完整回答
反對(duì) 回復(fù) 2023-05-09
?
呼啦一陣風(fēng)

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

如果您知道您將始終擁有此數(shù)據(jù)模式,則可以使用鍵(如上一個(gè)答案所示)。這意味著只有根級(jí)別的組,而數(shù)據(jù)集是每個(gè)組下的唯一對(duì)象。當(dāng)您不知道文件的確切內(nèi)容時(shí),“訪問者”功能非常方便。


有 2 個(gè)訪問者函數(shù)。他們是visit()和visititems()。每個(gè)遞歸地遍歷對(duì)象樹,為每個(gè)對(duì)象調(diào)用訪問者函數(shù)。唯一的區(qū)別是可調(diào)用函數(shù)visit接收 1 個(gè)值:name,而visititems接收 2 個(gè)值:name和node(一個(gè) h5py 對(duì)象)。名稱就是一個(gè)對(duì)象的名稱,而不是完整的路徑名。我更喜歡visititems有兩個(gè)原因:1) 擁有節(jié)點(diǎn)對(duì)象允許您對(duì)對(duì)象類型進(jìn)行測(cè)試(如下所示),以及 2) 確定路徑名需要您知道路徑或使用對(duì)象的名稱屬性來獲取它。


下面的示例創(chuàng)建一個(gè)簡單的 HDF5 文件,創(chuàng)建一些組和數(shù)據(jù)集,然后關(guān)閉該文件。然后它以讀取模式重新打開并用于visititems()遍歷文件對(duì)象樹。(注意:訪問者函數(shù)可以有任何名稱并且可以與任何對(duì)象一起使用。它從文件結(jié)構(gòu)中的那個(gè)點(diǎn)開始遞歸遍歷。)


f.close()此外,您在使用構(gòu)造時(shí)不需要with / as:。


import h5py

import numpy as np


def visit_func(name, node) :

    print ('Full object pathname is:', node.name)

    if isinstance(node, h5py.Group) :

        print ('Object:', name, 'is a Group\n')

    elif isinstance(node, h5py.Dataset) :

        print ('Object:', name, 'is a Dataset\n')

    else :

        print ('Object:', name, 'is an unknown type\n')


arr = np.arange(100).reshape(10,10)


with h5py.File('SO_63315196.h5', 'w') as h5w:

    for cnt in range(3):

        grp = h5w.create_group('group_'+str(cnt)) 

        grp.create_dataset('data_'+str(cnt),data=arr) 

    

with h5py.File('SO_63315196.h5', 'r') as h5r:     

    h5r.visititems(visit_func)


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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