在python中读取矩阵文本文件

时间:2019-03-16 10:14:24

标签: python readfile

我知道这可能是很基本的,但是当我尝试将文件加载到python.like

时,我不断出现以下错误。
  

ValueError:无法将字符串转换为浮点型

我尝试过

input = np.loadtxt("input.txt", dtype='i', delimiter=' ')
open(file.txt,'r')

read csv,但无法正确读取,可能只是一些小错误。

文件如下例所示。我不需要第一行,因为它们仅说明限制和数据之间的步长。数字和一些空行之间有多个空格

谢谢

-89.9916666667 89.9916666667   -0.0083333333  360.0083333333    0.0166666667    0.0166666667

 15.0900     15.0740     15.0730     15.0730     15.0730     15.0730
 15.0730     15.0730     15.0730     15.0730     15.0730     15.0730
 15.0730     15.0730     15.0740     15.0740     15.0740     15.0740
 15.0740     15.0740     15.0730     15.0730     15.0730     15.0730
 15.0730     15.0730     15.0730     15.0720     15.0720     15.0720
 15.0720     15.0720     15.0720     15.0720     15.0710     15.0710
 15.0710     15.0710     15.0710     15.0710     15.0710     15.0720
 15.0720     15.0730     15.0730     15.0740     15.0740     15.0740
 15.0740     15.0740     15.0730     15.0730     15.0730     15.0730
 15.0730     15.0730     15.0740     15.0740     15.0750     15.0750
 15.0760     15.0760     15.0760     15.0760     15.0760     15.0750
 15.0750     15.0740     15.0740     15.0740     15.0730     15.0730
 15.0730     15.0730     15.0730     15.0730     15.0730     15.0730
 15.0740     15.0740     15.0740     15.0750     15.0750     15.0750
 15.0760     15.0760     15.0760     15.0760     15.0760     15.0760
 15.0760     15.0760     15.0760     15.0760     15.0750     15.0740
 15.0740     15.0740     15.0740     15.0730     15.0730     15.0730
 15.0730     15.0730     15.0720     15.0720     15.0720     15.0720
 15.0720     15.0720     15.0720     15.0720     15.0710     15.0710
 15.0710     15.0710     15.0710     15.0710     15.0710     15.0710
 15.0710     15.0710     15.0710     15.0710     15.0710     15.0710
 15.0710     15.0710     15.0710     15.0710     15.0710     15.0710
 15.0710     15.0710     15.0710     15.0710     15.0710     15.0710
 15.0710     15.0710     15.0720     15.0720     15.0730     15.0730
 15.0730     15.0730     15.0730     15.0740     15.0730     15.0730
 15.0730     15.0730     15.0730     15.0730     15.0730     15.0730
 15.0730     15.0730     15.0730     15.0730     15.0730     15.0720
 15.0720     15.0720     15.0710     15.0710     15.0700     15.0700
 15.0700     15.0710     15.0710     15.0710     15.0720     15.0720
 15.0720     15.0730     15.0730     15.0730     15.0740     15.0740

 15.0740     15.0740     15.0740     15.0740     15.0740     15.0740
 15.0740     15.0730     15.0730     15.0730     15.0730     15.0730
 15.0730     15.0720     15.0720     15.0720     15.0720     15.0720
 15.0720     15.0710     15.0710     15.0710     15.0710     15.0710
 15.0710     15.0710     15.0710     15.0710     15.0710     15.0710

1 个答案:

答案 0 :(得分:1)

似乎您的 input.txt 文件中有两个空行,并且值之间的间距不一致。空行需要删除。

为了说明,在第一行中,您有:

-89.9916666667 89.9916666667   -0.0083333333  360.0083333333    0.0166666667    0.0166666667

第一个值用一个空格分隔,其他值分别具有3、2和4。当您在对np.loadtxt("input.txt", dtype='i', delimiter=' ')的调用中指定定界符时,就是在指定单个空格字符。只需删除delimiter关键字参数即可接受任意数量的空格字符作为分隔符。

此外,您的呼叫还使用dtype='i'将输入数据类型指定为整数。我不知道这是否是故意的,但这会将所有值四舍五入到最接近的整数。查看您的数据,这可能不是您想要的。

最后,您对open('input.txt', 'r')的调用没有任何作用,因为np.readtxt自己处理文件的打开和关闭。

希望这可以解决您的问题。