我有一个矢量看字符串列表,即:' [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值更改为' ',如何让它正确区分值?
答案 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)