Python 将多维数组的字符串转换为numpy数组

Python 将多维数组的字符串转换为numpy数组,python,numpy,Python,Numpy,我想转换一个字符串,如 “[[[1 2 3]\n[2 3 4]]” 进入一个numpy数组 [[1,2,3],[2,3,4]] 如何使用Python实现这一点?您可以将字符串转换为Python可以作为列表(或列表列表)计算的表示形式,然后将其转换为numpy数组,例如: import ast raw = "[[[1 2 3]\n [2 3 4]]]" arr_str = raw.replace(" ", ",").replace(&

我想转换一个字符串,如

“[[[1 2 3]\n[2 3 4]]”

进入一个numpy数组

[[1,2,3],[2,3,4]]


如何使用Python实现这一点?

您可以将字符串转换为Python可以作为列表(或列表列表)计算的表示形式,然后将其转换为numpy数组,例如:

import ast

raw =  "[[[1 2 3]\n [2 3 4]]]"
arr_str = raw.replace(" ", ",").replace("\n","")
arr = np.array(ast.literal_eval(arr_str))

你可以做到以下几点,但是我不知道是否有更有效的方法(也许SO更好的头脑可以启发我们)。这将提供所需的输出:

import numpy as np
import json
import re

string = "[[[1 2 3]\n [2 3 4]]]"
string = json.loads(re.sub("\s+", ",", string.strip()))
string = np.array(string)

print(type(string))
输出为:

<class 'numpy.ndarray'>


每个数组后面都有一个空格,\n因此每个数组后面都会变成“,”。现在应该修复我得到了数组([1,2,3])我不知道为什么-使用输入字符串运行这个精确的脚本会得到[[[1,2,3],[2,3,4]]的输出数组。也许再检查一下你的输入?是的,我的错。这比使用ast快吗?您必须运行测试来确定速度。看看这两个答案,我会使用P.Leibner的替换方法(因为它更简洁,不需要导入),但我仍然会使用
json.loads()
代替
ast.literal\u eval()
。这是由于偏好。