python等同于MATLAB'用......替换不可重复的单元格。

时间:2017-05-31 18:35:50

标签: python matlab numpy

第一篇文章,请温柔。

由于[原因],与我合作的每个人都总是鼓励我从MATLAB切换到python进行数据后处理。

生成的数据输出到.txt文件中,该文件只是一堆空格分隔的数字,在几行中。

我目前的代码只有这个:

> import numpy
> 
> filepath='data.txt'
> 
> 
> 
> with open(filepath) as file:
>
>     data=[float(s) for s in file.read().split()]

我认为这应该做的是照顾空间描绘器,并获得list所有数据。然后我可以使用行数来弄清楚如何将列表重新排列成一个数组(旁注:我应该只使用numpy.loadtxt()来执行此操作吗?)。

唯一的问题是我的.txt文件中的某些数字未正确转换为float。例如,文件中的大多数数字看起来都像"0.900000000E-2",并且转换得很好。但是,一些非常小的数字不是用适当的科学记数法编写的,并且显示为"1.23456789-117."预期的数字,当然是1.23456789E-117

Matlab在导入function上有一个内置工具,它取代了"不可重复的"带有____的单元格,其中____可以是NaN,或0,或任何合适的单元格。如何在我调用之前将这样的内容编入我的代码中导入数据,以便将所有strings更改为floats

谢谢!

1 个答案:

答案 0 :(得分:3)

使用numpy.genfromtxt。使用loose=True(默认值),它会使用NaN填充无效数据:

numpy.genfromtxt(file, loose=True)
# or if you'd rather type less
numpy.genfromtxt(file)

您可以使用filling_values参数指定要用于代替无效数据的值:

numpy.genfromtxt(file, loose=True, filling_values=0)

要对无效数据抛出异常,您可以指定loose=False

numpy.genfromtxt(file, loose=False)