【问题标题】:Python equivalent of MATLAB's dataset arrayPython 等效于 MATLAB 的数据集数组
【发布时间】:2013-05-01 19:34:15
【问题描述】:

我正在尝试将一些代码从 MATLAB 转换为 Python。是否有与 MATLAB 的数据集数组等效的 Python? http://www.mathworks.com/help/stats/dataset-arrays.html

【问题讨论】:

    标签: python matlab dataset machine-learning


    【解决方案1】:

    如果您想对数据集执行数值运算,numpy 将是您的选择。 您可以通过组合基本的numpydtypes来指定任意记录类型,并通过字段名称访问记录,类似于Python的内置字典访问。

    import numpy
    myDtype = numpy.dtype([('name', numpy.str_), ('age', numpy.int32), ('score', numpy.float64)])
    myData = numpy.empty(10, dtype=myDtype) # Create empty data sets
    print myData['age'] # prints all ages
    

    您甚至可以使用 numpy 中的 tofile 和 'fromfile` 函数保存和重新加载这些数据,并继续使用命名字段:

    with open('myfile.txt', 'wb') as f:
        numpy.ndarray.tofile(myData, f)
    
    with open('myfile.txt', 'rb') as f:
        loadedData = numpy.fromfile(f, dtype=myDtype)
        print loadedData['age']
    

    【讨论】:

      【解决方案2】:

      您应该查看pandas 库,它是根据 R 的数据框建模的。

      更不用说这比 MATLAB 的数据集好得多

      【讨论】:

      • 对我目前的需求来说有点过头了,但很高兴知道这一点。似乎是一个非常强大的工具
      • 这正在成为 Python 科学计算堆栈(Numpy、Scipy、Matplotlib 等)的一部分。例如Canopy(EPD 的继任者)在其基础版本中包含此内容。
      • 再看了一下,我想我会开始使用它-看起来很有用
      【解决方案3】:

      Python dictionary 可以包含字符串或数字,甚至是其他字典的键:

      >>> d = {"name":"foo", "age":22, "props": {"value":2.1}}
      >>> d['props']['value']
      2.1
      

      根据您链接到的网站的引用,我假设这是您希望移植的内容:

      Statistics Toolbox™ 具有用于存储变量的数据集数组 异构数据类型。例如,您可以组合数值数据, 逻辑数据、字符串元胞数组和分类数组合二为一 数据集数组变量。

      【讨论】:

      • MATLAB 数据集是键值对数据结构吗?在我看来,元组比字典更接近。
      • This page 展示了一个数据集的使用,让我觉得字典更合适,但我不懂 MATLAB(只会一点 Python)
      • 你说得对,它确实看起来像一本字典。我也不熟悉这个数据集的数据结构。
      【解决方案4】:

      看看Numpy,它是一个第三方库,主要用于使用 Python 进行科学计算。还有一个页面覆盖Numpy for Matlab users

      我认为您正在寻找Numpy.array

      【讨论】:

        猜你喜欢
        • 2018-10-25
        • 2013-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        相关资源
        最近更新 更多