代码之家  ›  专栏  ›  技术社区  ›  Leander Heine

用python从matlab文件中读取字符串数据集

  •  0
  • Leander Heine  · 技术社区  · 11 月前

    在python中使用NYUv2数据集时,我尝试获取数据集中所有894个类的列表。从 documentation 我知道它被列在 names 变量 nyu_depth_v2_labeled.mat -文件。 我想有一个包含894个类名字符串的数组,但在尝试我在网上找到的方法时,我无法使其工作。

    这是我的代码:

    import numpy as np
    import h5py
    
    # Load the .mat file
    mat_path = '/path/to/nyu_depth_v2_labeled.mat'
    mat_file = h5py.File(mat_path, 'r')
    # get variable 'names'
    names = mat_file.get('names')
    print(names)
    print('-------------------------------')
    print(names[:])
    

    现在的问题是,结果如下:

    <HDF5 dataset "names": shape (1, 894), type "|O">
    -------------------------------
    [[<HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
    ...
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>
      <HDF5 object reference> <HDF5 object reference> <HDF5 object reference>]]
    

    如何使数据“可读”为python字符串?

    1 回复  |  直到 11 月前
        1
  •  0
  •   Daweo    11 月前

    我的搜索显示 pymatreader is available at PyPI 这是

    Matlab mat文件的便捷阅读器

    安装后,您应该能够

    from pymatreader import read_mat
    
    data = read_mat('/path/to/nyu_depth_v2_labeled.mat')
    

    这应该会导致

    data 是python dict 包含mat文件的所有变量。

    我没有能力测试它,所以请测试一下,如果它能做你需要做的事情,请写下来。