• python读取.mat文件的数据


    首先导入scipy的包 from scipy.io import loadmat 

    然后读取 m = loadmat("F:/__identity/activity/论文/data/D001.mat") 

    注意这里m是一个dict数据结构

    >>> m
    {'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Mon Aug 15 22:16:43 2011', '__globals__': [], 'labels': array([[1],
           [3],
           [4],
           ...,
           [4],
           [3],
           [4]], dtype=uint8), 'data': array([[ 1.    ,  0.35  ,  0.265 , ...,  0.0995,  0.0485,  0.07  ],
           [ 2.    ,  0.53  ,  0.42  , ...,  0.2565,  0.1415,  0.21  ],
           [ 1.    ,  0.44  ,  0.365 , ...,  0.2155,  0.114 ,  0.155 ],
           ...,
           [ 1.    ,  0.59  ,  0.44  , ...,  0.439 ,  0.2145,  0.2605],
           [ 1.    ,  0.6   ,  0.475 , ...,  0.5255,  0.2875,  0.308 ],
           [ 2.    ,  0.625 ,  0.485 , ...,  0.531 ,  0.261 ,  0.296 ]]), '__version__': '1.0'}
    >>> m.keys()
    dict_keys(['__header__', '__globals__', 'labels', 'data', '__version__'])
    >>> m["labels"]
    array([[1],
           [3],
           [4],
           ...,
           [4],
           [3],
           [4]], dtype=uint8)
    >>> m["data"]
    array([[ 1.    ,  0.35  ,  0.265 , ...,  0.0995,  0.0485,  0.07  ],
           [ 2.    ,  0.53  ,  0.42  , ...,  0.2565,  0.1415,  0.21  ],
           [ 1.    ,  0.44  ,  0.365 , ...,  0.2155,  0.114 ,  0.155 ],
           ...,
           [ 1.    ,  0.59  ,  0.44  , ...,  0.439 ,  0.2145,  0.2605],
           [ 1.    ,  0.6   ,  0.475 , ...,  0.5255,  0.2875,  0.308 ],
           [ 2.    ,  0.625 ,  0.485 , ...,  0.531 ,  0.261 ,  0.296 ]])

    有点不太懂这个“uint8”

    >>> m["labels"][0]
    array([1], dtype=uint8)
    >>> m["labels"][0][0]
    1
    >>> m["labels"][0][0] + 1
    2
    >>> m["labels"][0].as_type("int")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'numpy.ndarray' object has no attribute 'as_type'   # 注意时astype不是as_type
    >>> m["labels"][0].dtype
    dtype('uint8')
    >>> m["labels"][0].astype("int")
    array([1])

    这个数据类型真是醉了:

    >>> type(m["labels"][0][0] + 1)
    <class 'numpy.int32'>

    如果要把它变成dataframe,导入pandas后

    >>> df = pd.DataFrame(m["data"])
    >>> df.head()
         0      1      2      3       4       5       6      7
    0  1.0  0.350  0.265  0.090  0.2255  0.0995  0.0485  0.070
    1  2.0  0.530  0.420  0.135  0.6770  0.2565  0.1415  0.210
    2  1.0  0.440  0.365  0.125  0.5160  0.2155  0.1140  0.155
    3  3.0  0.330  0.255  0.080  0.2050  0.0895  0.0395  0.055
    4  3.0  0.425  0.300  0.095  0.3515  0.1410  0.0775  0.120
  • 相关阅读:
    40 宾语从句的连词
    unar解压rar,zip等文件
    Disable beep in WSL terminal on Windows 10 [closed]
    Collins COBUILD Advanced Learner’s Dictionary (Collins COBUILD Dictionaries for Learners)
    中小学语文示范诵读库
    自己打印标准五笔字型教材(86)
    赵元任《施氏食狮史》
    西班牙语学习资源
    为什么“能”?为什么“行”?为什么“好”?答案在这里!
    社会主义好
  • 原文地址:https://www.cnblogs.com/cymwill/p/8331002.html
Copyright © 2020-2023  润新知