将txt文件数据加载到numpy数组中/出现错误

时间:2018-12-05 22:00:11

标签: python arrays numpy text

我正在尝试将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文件中获取此数据并摆脱此错误?

感谢您的帮助!

1 个答案:

答案 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]])