首页 > 解决方案 > 将字符串转换为二维 numpy 数组

问题描述

我有一个从 .mat 文件加载的字符串,格式如下:

(array([172.169, 73.2]), array([128.83, 102.31]), array([143.49, 124.43]), array([186.83, 95.69]), 'R', array([], dtype=float64))

有什么办法可以直接将其转换为 numpy 2D 数组,而无需解析整个字符串并手动删除“数组”?也numpy.fromstring不会numpy.frombuffer在这里工作。

标签: pythonarraysstringnumpy

解决方案


您可以使用np.fromstring正则表达式:

import re

# s is your string
np.fromstring(', '.join(re.findall(r'\[(.+?)\]', s)), sep =', ').reshape((2, 2, 2))

输出:

array([[[172.169,  73.2  ],
        [128.83 , 102.31 ]],

       [[143.49 , 124.43 ],
        [186.83 ,  95.69 ]]])

推荐阅读