2017-05-31 46 views
2

第一次發帖,請溫柔。相當於MATLAB的蟒蛇「替換爲unimportable細胞......」

與我合作的每個人都始終鼓勵我由於[原因]將數據後處理的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,或者任何恰當的「unimportable」細胞。我如何打這個電話改變一切的stringsfloats之前,我編寫這樣的事情在我的代碼,其中進口數據?

謝謝!

回答

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) 
+0

謝謝!很好地工作。 – gpsimms