簡體   English   中英

h5py 將虛擬數據集讀入 NumPy 數組時出錯

[英]h5py error reading virtual dataset into NumPy array

我正在嘗試從使用 h5py 創建的虛擬 HDF 數據集加載數據,但在正確加載數據時遇到了一些問題。

這是我的問題的一個例子:

import h5py
import tools as ut

virtual  = h5py.File(ut.params.paths.virtual)

a = virtual['part2/index'][:]

print(virtual['part2/index'][-1])
print(a[-1])

這輸出:

[890176134]
[0]

為什么? 為什么將數據復制到 NumPy 數組(值= [0] )與直接從數據集讀取(值= [890176134] )時的最后一個元素不同?

我是否在不知不覺中做了一些可怕的錯誤?

非常感謝。

是的,您應該從虛擬數據集或從虛擬數據集創建的數組中獲得相同的值。 如果沒有有關數據的更多詳細信息,就很難診斷錯誤。

我使用了 h5py 示例vds_simple.py來演示這應該如何表現。 大多數代碼構建了 2 個 HDF5 文件。 最后的部分比較輸出。

使用示例數據創建 4 個源文件的代碼:

# create sample data
data = np.arange(0, 100).reshape(1, 100) + np.arange(1, 5).reshape(4, 1)

# Create 4 source files (0.h5 to 3.h5)
for n in range(4):
    with h5py.File(f"{n}.h5", "w") as f:
        d = f.create_dataset("data", (100,), "i4", data[n])

定義虛擬布局和組裝虛擬數據集的代碼:

# Assemble virtual dataset
layout = h5py.VirtualLayout(shape=(4, 100), dtype="i4")
for n in range(4):
    filename = "{}.h5".format(n)
    vsource = h5py.VirtualSource(filename, "data", shape=(100,))
    layout[n] = vsource

# Add virtual dataset to output file
with h5py.File("VDS.h5", "w", libver="latest") as f:
    f.create_virtual_dataset("vdata", layout, fillvalue=-5)
    f.create_dataset("data", data=data, dtype="i4")

讀取和打印數據的代碼:

# read data back
# virtual dataset is transparent for reader!
with h5py.File("VDS.h5", "r") as f:
    print("Virtual dataset:")
    print(f["vdata"][-1,-1])
    print("Array Data from Virtual dataset:")
    arr = f["vdata"][:]
    print(arr[-1,-1])  

上面代碼的輸出:

Virtual dataset:
103
Array Data from Virtual dataset:
103

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM