我正在尝试将txt文件数据加载到numpy数组中。它引发以下错误:
ValueError: could not convert string to float: '6,50,36'
我要上传到数组中的txt文件是这个(这是完整文件):
6,50,36
2,0,1,3,0,1
1,2,1,2,1,2
2,1,2,1,0,1
0,2,0,2,2,3
0,3,3,3,1,4
2,3,2,3,1,3
我进行了一些研究,认为“ np.loadtxt()”是将txt加载到数组中的简单解决方案,所以这是我到目前为止尝试过的:
import numpy as np
from numpy import loadtxt
f = open('DataNumbers.txt','r')
data_array = float(np.loadtxt(f)) # I thought using 'float' would work for this issue
我想知道这不起作用的原因是因为该文件在txt文件第一行的36之后包含两个空格吗?
如何从加载到数组中的txt文件中获取此数据并摆脱此错误?
感谢您的帮助!
答案 0 :(得分:1)
In [498]: f = open('stack53641413.txt','r')
In [501]: alist = [[int(x) for x in line.split(',')] for line in f]
In [502]: alist
Out[502]:
[[6, 50, 36],
[2, 0, 1, 3, 0, 1],
[1, 2, 1, 2, 1, 2],
[2, 1, 2, 1, 0, 1],
[0, 2, 0, 2, 2, 3],
[0, 3, 3, 3, 1, 4],
[2, 3, 2, 3, 1, 3]]
In [504]: np.array(alist[1:])
Out[504]:
array([[2, 0, 1, 3, 0, 1],
[1, 2, 1, 2, 1, 2],
[2, 1, 2, 1, 0, 1],
[0, 2, 0, 2, 2, 3],
[0, 3, 3, 3, 1, 4],
[2, 3, 2, 3, 1, 3]])
alist[0]
是您的业务。
loadtxt
跳过了困难的第一行:
In [507]: np.loadtxt(f, dtype='int', delimiter=',',skiprows=1)
Out[507]:
array([[2, 0, 1, 3, 0, 1],
[1, 2, 1, 2, 1, 2],
[2, 1, 2, 1, 0, 1],
[0, 2, 0, 2, 2, 3],
[0, 3, 3, 3, 1, 4],
[2, 3, 2, 3, 1, 3]])