我想将字符串数据类型转换为二维的numpy数组。
我正在从包含以下内容的目录中导入.txt文件:
[[18,1,2018,12,15],
[07,1,2018,12,15],
[03,1,2018,12,15]]
,代码为:
import numpy as np
f = open("/home/pi/timer_database.txt","r")
read = f.read()
x = np.array(list(read))
print(x.size)
print(type(x))
print(x.ndim)
输出为:
47
type <numpy.ndarray>
1
请帮助我解决这个问题。
答案 0 :(得分:0)
使用此代码
import numpy as np
f = open("/home/pi/timer_database.txt","r")
read = f.read()
read = read.replace("[" , "")
read = read.replace("]" , "")
read = read.replace(",\n" , "\n")
f= open("New_Array.txt","w+")
f.write(read)
f.close()
Array = np.loadtxt("New_Array.txt" , delimiter=',')
print(Array)
答案 1 :(得分:0)
您可以使用ast
来评估您的字符串,这比解析整个字符串要容易得多:
import ast
x=np.array(ast.literal_eval(read))
或者只是eval
:
x=np.array(eval(read))
但是由于您拥有前导零,这将引发错误,因此首先只需将其删除:
import re
read=re.sub(r'\b0','',read)
另外,如果您正在编写文件,则最好使用其他方法,首先我建议仅使用pickle
。