2017-08-27 108 views
0

我想寫一個程序,打開一個文本文件,只有行和列中的數字,將它們保存在一個新文件中。我選擇列的部分起作用,而部分行不起作用。我必須選擇條件爲x> 10e13的行(其中x是特定列中的值)。 我有一些問題,特別是在行選擇。 由於他們是非常大的文件,我被建議使用numpy,所以我想用這種方式運行代碼。 這是我寫的代碼:從文件中使用numpy選擇條件從文件中選擇列和行

import numpy as np 

matrix = np.loadtxt('file.dat') 

#select columns 
column_indicies = [0] 
selected_columns = matrix[:,column_indicies] 

x=1E14 #select lines 
for line in matrix: 
    if float(line) > x: 
     #any ideas? 

selected_matrix = matrix[selected_lines,selected_columns] 

np.savetxt('new_file.dat', selected_matrix, fmt='%1.4f') 

這是我的輸入數據的小樣本:

185100000000000.0000 
121300000000000.0000 
257800000000000.0000 
43980000000000.0000 
+0

您需要選擇任何大於x或任何行的元素?不完全明白你在找什麼。 – atru

回答

0

有很多方法可以做到這一點。這裏是你可能想要嘗試的方向,你已經採取了同樣的方向:

matrix = <your matrix> 
new_matrix = np.array([]).reshape(matrix.shape) 
column_index = <the column index you want to compare> 
x = 1E14 
for line in range(matrix.shape[0]): 
    if matrix[line][column_index] > x: 
     new_matrix.append(matrix[line]) 

希望是有道理的。我們只將這些行附加到符合條件的新矩陣。我沒有運行代碼,所以可能會有一些小錯誤。但是,我希望你瞭解如何完成這項任務。