2017-08-27 74 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]) 

希望是有道理的。我们只将这些行附加到符合条件的新矩阵。我没有运行代码,所以可能会有一些小错误。但是,我希望你了解如何完成这项任务。