将矢量看字符串转换为矢量值[python]

时间:2018-01-02 18:41:30

标签: python string vector

我有一个矢量看字符串列表,即:' [1,5,7,2,n]'并且想要将它们转换为矢量,我试过了:

import numpy as np

string = '[1, 4, 7, 42]' ##(or in my case the result of os.popen(cmd).read() )
vector = np.fromstring(string, sep=', ')

print vector 
[]

如果我将sep值更改为' ',如何让它正确区分值?

3 个答案:

答案 0 :(得分:0)

问题是括号。

>>> np.fromstring('1, 4, 7, 42', sep=',')
array([  1.,   4.,   7.,  42.])

我建议您使用ast.literal_eval,然后将结果转换为numpy数组。

>>> from ast import literal_eval
>>> np.array(literal_eval('[1, 4, 7, 42]'))
array([ 1,  4,  7, 42])

答案 1 :(得分:0)

如果你想要非常懒惰,请使用np.matrix构造函数:

>>> np.array(np.matrix(string)).ravel()
array([ 1,  4,  7, 42])

甚至更不干净但更短:

>>> np.matrix(string).A[0]
array([ 1,  4,  7, 42])

答案 2 :(得分:0)

一种天真但简单的方法是

string = "[1, 2, 3, 4]"
arr = [int(i.strip()) for i in string[1:-1].split(",")]

然后你可以将它转换为numpy数组

np.array(arr)