В файле .dat первая строка [это целое число, которое я назвал S) указывает количество имеющихся наборов, а также количество вариантов на набор. Например, если S равно 21, имеется 21 набор из каждых 21 строки.
Затем, начиная со следующей строки, есть 6 столбцов. Я хочу добавить 4-й столбец для каждого набора из S строк в массив, чтобы сделать некоторые вычисления позже. Я хочу прекратить делать это до строки S * S. Сложность в том, что мне нужно игнорировать (не добавлять) каждую 21-ю строку в наборе, поскольку это фиктивные результаты.
Я не совсем уверен, как это сделать, но вот что я получил на данный момент. Благодарен за любую помощь.
with open('foo.dat') as f:
S = int(f.readline()) #extracting set number
print("Sets, S:", S)
I = []
for i, lines in enumerate(f):
columns = lines.split()
if i < S*S:
In = float(columns[3])
I.append(In) #extracting 4th column
#checking results
print(I)
print("length of I:", len(I))
Пожалуйста, найдите прикрепленную ссылку на пример файла .dat, с которым я работаю: https://pastebin.com/Cgms3efh
Ожидаемый результат:
I1 = [140,66758, 46,745557, 20,931668, 10,599119, 5,4772385, 2,9093667, 1,713973, 1,1483754, 0,83311013, 0,62603209, 0,47950916, 0,37391387, 0,29780616, 0,2431309, 0,20399252, 0,17613667, 0,15656772, 0,14322945, 0,13475736, 0,13030334]
I2 = [46,745557, 28,637786, 16,271265, 9,0978727, 4,9856322, 2,7981477, 1,7304986, 1,1918406, 0,87493924, 0,66197242, 0,5100049, 0,39981398, 0,31993277, 0,2622417, 0,22075246, 0,19110705, 0,17021343, 0,1559358, 0,14684993, 0,14206743]
. ..
ПРИМЕЧАНИЕ. На самом деле мне не нужно сохранять их все, так как я проведу расчет с ними для каждого набора, прежде чем перейти к следующему набору из 21-1 строк. Поэтому массив я могу перезаписать для каждого нового набора строк.