【问题标题】:What is the meaning of () inside a list eg. [()] in Python?例如,列表中 () 的含义是什么。 [()] 在 Python 中?
【发布时间】:2023-03-28 03:18:02
【问题描述】:

我遇到了一个 h5py 教程,其中访问 hdf5 文件的特定索引,如下所示:

f = h5py.File('random.hdf5', 'r')
data = f['default'][()]
f.close()

print(data[10])

这样,即使文件关闭,数据仍然可以访问。添加[()] 似乎不再使data 成为一个简单的指针,而是数据对象本身。 [()]是什么意思?

【问题讨论】:

  • 看起来他们正在索引一个空元组的字典? {(): "foo"}[()] 给出"foo"?

标签: python-3.x hdf5


【解决方案1】:

() 是一个空的tuple。 HDF5 数据集可以有任意数量的维度并支持索引,但有些数据集是零维的(它们存储单个标量值)。对于这些,h5py 使用带有空元组[()] 的索引来访问该值。您不能使用[0] 甚至[:],因为这意味着至少要切分一个维度。

【讨论】:

  • 谢谢。我很困惑为什么它会以这种方式被索引。这是一个非常巧妙的原则。
【解决方案2】:

() 是一个空元组,使用空元组进行索引记录在h5py's documentation

空数据集的形状定义为“无”,这是确定 > 数据集是否为空的最佳方法。空数据集可以以类似于标量 > 数据集的方式“读取”,即如果 empty_dataset 是空数据集:

>>> empty_dataset[()]
h5py.Empty(dtype="f")

数据集的 dtype 可以正常通过 .dtype 访问。由于空 > 数据集无法切片,因此某些数据集方法如 read_direct 用于空数据集时会引发异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-13
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 2020-08-23
    • 1970-01-01
    相关资源
    最近更新 更多