我正在尝试编写一个程序,打开一个只包含行和列中的数字的文本文件,以将它们保存在新文件中。我选择列的部分工作,而行的部分不工作。我必须选择条件为x>的行。 10e13(其中x是特定列中的值)。 我有一些问题,特别是在行选择方面。 由于它们是非常大的文件,我被建议使用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 :(得分: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])
希望这是有道理的。我们只将这些行附加到符合您条件的新矩阵。我没有运行代码,因此可能存在一些小错误。但是,我希望你能够了解如何完成这项任务。