我从文件中收到下面的字符串
data = 'data: [nan, nan, nan, nan, nan, nan, -10.34, nan, 4.45533]'并希望将其转换为numpy数组。在python中有什么好方法可以这样做吗?
我已经试过了
x_values_list = np.fromstring(data[5:], dtype=float, sep=',')但它只会让我-1
发布于 2022-04-23 09:33:45
注释中有一项建议指出,您需要切片以去掉方括号:
np.fromstring(data[7:-1], dtype=float, sep=',')更通用的解决方案可能是使用regex只提取括号之间的部分:
import re
import numpy as np
a = np.fromstring(re.search(r'(?<=\[)[^\[\]]+(?=\])', data).group(),
dtype=float, sep=',')如果您不确定是否会有匹配:
m = re.search(r'(?<=\[)[^\[\]]+(?=\])', data)
if m:
a = np.fromstring(m.group(), dtype=float, sep=',')
else:
a = np.array([])产出:
array([ nan, nan, nan, nan, nan, nan,
-10.34 , nan, 4.45533])发布于 2022-04-23 11:08:33
这个问题没有具体说明如何实现它的期望输出和/或限制.
假设您的目标是获得一个类似于此的numpy.ndarray
[ 0. 0. 0. 0. 0. 0. -10.34
0. 4.45533]然后,您可以创建一个类似于
import numpy as np
def string_to_numpy_array(data):
data = data.replace('data: ', '')
data = data.replace('[', '')
data = data.replace(']', '')
data = data.replace('nan', '0')
data = data.split(',')
data = [float(i) for i in data]
data = np.array(data)
print(data)
print(type(data))
return data基本上
]
data:、[和nan移到0的类型。
它很简单,不管您不想要什么步骤,都可以轻松地去掉它(例如,如果您想要nan,删除替换它的函数行)。
正如您在下面的图像中所看到的,如果我测试它

我得到了

https://stackoverflow.com/questions/71978291
复制相似问题