[英]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.