在python中将数组的字符串表示转换为numpy数组

2024-06-11 01:30:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以用ast.literal_evalconvert a string representation of a list to a list。有一个与numpy数组等价的数组吗?

x = arange(4)
xs = str(x)
xs
'[0 1 2 3]'
# how do I convert xs back to an array

使用ast.literal_eval(xs)会引发SyntaxError。如果需要的话,我可以进行字符串解析,但我认为可能有更好的解决方案。


Tags: oftonumpyconvertstringeval数组ast
2条回答

从这个开始:

 x = arange(4)
 xs = str(x)
 xs

'[0 1 2 3]'    

试试这个:

import re, ast
xs = re.sub('\s+', ',', xs)
a  = np.array(ast.literal_eval(xs))
a

array([0, 1, 2, 3])    

对于1D数组,Numpy has a function called ^{},因此不需要额外的库就可以非常高效地完成。

简单地说,您可以这样解析字符串:

s = '[0 1 2 3]'
a = np.fromstring(s[1:-1], dtype=np.int, sep=' ')
print(a) # [0 1 2 3]

对于nD数组,可以使用.replace()来移除括号,使用.reshape()来重塑所需形状,或者使用Merlin的解决方案。

相关问题 更多 >