【发布时间】:2018-06-15 19:50:58
【问题描述】:
我正在尝试将字符串 '[ 0. 0. 1.]' 转换为 numpy 数组。
这是我编写的代码,但需要更复杂吗?
arr = []
s = '[ 0. 0. 1.]'
arr.append(int(s.split(" ")[1].replace("." , '')))
arr.append(int(s.split(" ")[3].replace("." , '')))
arr.append(int(s.split(" ")[5].replace("]" , '').replace("." , '')))
arr = np.array(arr)
print(arr)
print(type(arr))
print(type(arr[0]))
上面的代码打印:
[0 0 1]
<class 'numpy.ndarray'>
<class 'numpy.int64'>
有没有更简洁的方法将字符串 '[ 0. 0. 1.]' 转换为 numpy int 数组类型?
【问题讨论】:
-
取决于您想要的灵活性。
np.array(s[1:-1].split(), float).astype(int) -
甚至
np.matrix(s).A1.astype(int) -
@PaulPanzer s = '[ 0. 0. 1.]' np.matrix(s) 返回 'TypeError: Invalid data string provided: ['
-
奇怪,它对我有用。你在哪个版本?
-
看起来它在 1.13.x 期间的某个时候发生了变化。所以如果你是 1.12 或更低,你将不得不做
np.matrix(s[1:-1]).A1.astype(int)