2015-11-27 5 views
1

Привет Я пытаюсь извлечь некоторые конкретные строки из моего файла данных, который удовлетворяет моим условиям. Мой файл данных выглядит следующим образом:Выбор определенных строк из файла данных

10.0 950.0 123.315408  416.684182  60.0000004 
10.0 900.0 125.687425  416.420677  60.0000004 
10.0 875.0 126.577457  416.252579  60.0000004 
12.0 950.0 122.791462  416.899612  60.0000004 
12.0 925.0 124.181433  416.78099  60.0000004 

Я хочу, чтобы напечатать строки, где второй столбец имеет значение 950,0, а затем построить из этого файла. Я подумал, что было бы легче сначала извлечь информацию в файл, а потом зарисовать ее. Если его возможно построить первый и третий столбцы, а второй - постоянный, это будет идеально.

ответ

0

Ваши данные не разделены вкладкой, пожалуйста, проверьте его один раз. пожалуйста, попробуйте этот

x=[] 
y=[] 
for line in open("data.dat"): 
    if line.split()[1]=='950.0': 
     newdata.write(line) 
     x.append(line.split()[1]) 
+0

Я фактически извлекаю эти данные, используя следующую часть из моего кода: для x, y, z, t, k, j, l в zip ([TanBeta], [A0param], [Muparam], [Alparam ], [Mhiggs], [ChiO], [MRHSN]): data.write (str (x) + '\ t' + str (y) + '\ t' + str (z) + '\ t' + str (t) + '\ t' + str (k) + '\ t' + str (j) + '\ t' + str (l) + '\ n') поэтому он должен быть отделен вкладкой i предположим, и код выше работает отлично, если я просто хочу построить эти столбцы – jackaraz

0

Это довольно легко сделать с NumPy. numpy.loadtxt() импортирует весь файл данных в виде массива 2D numpy. Затем вы можете создать другой массив только тех строк, в которых второй столбец имеет некоторое значение с numpy.select(). Вы можете превратить этот массив из списка строк списка столбцов с numpy.transpose(), которые делают бы легко выбрать только первые и третьи столбцы с чем-то вроде:

x=transposed_arr[0] 
y=transposed_arr[2] 

, а затем сделать график рассеяния с Matplotlib ,

Смежные вопросы