Я пишу программу, которая создает файл с помощью функции add_to_file, а затем другая программа принимает этот файл в качестве ввода.Python: сравнение столбцов в numpy
файл имеет 4 колонки: имя, начальную позицию (ы), описание, конечное положение (ы)
, что программа должна делать, читать файл в Numpy массив и создать правдоподобную «движение слэш», по существу, создавая массив, который будет иметь по крайней мере один из конечных положений в движении, чтобы быть таким же, как, по меньшей мере, одно из положений пуска в движении, которое будет следовать
def make_sequence(size,array):
count = 0
sequence = [array[0]]
result = [array[0,0]]
for row in array[1:size]:
if row[1] == sequence[count][3]:
sequence.append(row)
result.append(row[0])
count += 1
else:
pass
return result
что это делает , это взятие массива из файла и создание нового массива (результата), так что новый массив просто имена движений, но только движения что рядом с eachother будет течь, потому что их начальные позиции точно такие же, как конечные позиции предыдущего движения! Вот мой вопрос:
Некоторые движения могут начинаться и заканчиваться в разных положениях, и то, что я написал, может принимать только 1 начальную и 1 конечную позицию за одно движение.
Вопрос: Как я могу сделать так, что если строка для значений позиции были запятая разделяет значения, то есть (а, б, в, г), он будет иметь возможность перебирать их и сравнить их с самого начала для завершения, чтобы функция вернула все движения, которые текут?
Edit:
Вот пример того, что я хочу, чтобы мой код, чтобы быть в состоянии сделать
вход:
row_1 = ["Name1", "1,3,4,5", "Description", "2"]
row_2 = ["Name2", "5,3", "Description", "4"]
row_3 = ["Name3", "2", "Description", "1"]
row_4 = ["Name4", "1", "Description", "7,3"]
row_5 = ["Name5", "3", "Description", "5,9,4"]
row_6 = ["Name6", "2", "Description", "7"]
row_7 = ["Name7", "7", "Description", "2"]
row_8 = ["Name8", "1", "Description", "4"]
row_9 = ["Name9", "4", "Description", "2"]
data = np.array((column_index,row_1,row_2,row_3,row_4,row_5,row_6,row_7,row_8,row_9))
print make_sequence(7,array)
выход:
[Name1,Name3,Name4,Name5]
Вы получаете это вывод, потому что он запускается автоматически с row_1, который имеет имя: «Name1», затем он читает следующую строку и i f, что строка имеет начальную позицию, которая совпадает с конечной позицией, как предыдущая строка, добавленная к правильной последовательности, это имя будет добавлено к массиву результатов.
И он делает это только в течение первых 7 рядов, так как вход был 7 для размера
Ваш вопрос не имеет никакого смысла без ввода пробы и то, что ваш ожидаемый результат должен быть. –
Я отредактировал его как таковой, теперь имеет смысл? –