Я очень сильно застрял, и каждая запрошенная мной питонистика не может помочь.Сравнение векторов в массиве векторов
Я использую vstack, чтобы создать массив векторов в цикле, как это:
Corr = np.vstack((Corr, S))
Мне нужно удалять повторяющиеся векторы так, что это массив уникальных векторов и сравнить все из этих векторов ,
Я знаю, что это сравнение может быть сделано в списках, но я не нашел способ добавить полные векторы в список.
Это результат (я пометил уникальные векторы с уникальными буквами):
Corr = [[ 0. 0. 0. 0. -2. 4. 4. 2. 2.] #a
[-4. -4. -4. -4. 2. 4. 4. 2. 2.]#b
[-4. 0. 0. 4. -2. 0. 0. -2. 2.]#c
[ 0. -4. -4. 0. 2. 0. 0. -2. 2.]#d
[ 0. -4. 4. 0. -2. 0. 0. 2. -2.]#e
[-4. 0. 0. -4. 2. 0. 0. 2. -2.]#f
[-4. -4. 4. 4. -2. 4. -4. -2. -2.]#g
[ 0. 0. 0. 0. 2. 4. -4. -2. -2.]#h
[ 0. 4. -4. 0. -2. 0. 0. 2. -2.]#i
[-4. 0. 0. -4. 2. 0. 0. 2. -2.]#f
[-4. 4. -4. 4. -2. -4. 4. -2. -2.]#j
[ 0. 0. 0. 0. 2. -4. 4. -2. -2.]#k
[ 0. 0. 0. 0. -2. -4. -4. 2. 2.]#l
[-4. 4. 4. -4. 2. -4. -4. 2. 2.]#m
[-4. 0. 0. 4. -2. 0. 0. -2. 2.]#n
[ 0. 4. 4. 0. 2. 0. 0. -2. 2.]#o
[ 4. 0. 0. -4. -2. 0. 0. -2. 2.]#c
[ 0. -4. -4. 0. 2. 0. 0. -2. 2.]#d
[ 0. 0. 0. 0. -2. -4. -4. 2. 2.]#p
[ 4. -4. -4. 4. 2. -4. -4. 2. 2.]#q
[ 4. -4. 4. -4. -2. -4. 4. -2. -2.]#r
[ 0. 0. 0. 0. 2. -4. 4. -2. -2.]#k
[ 0. -4. 4. 0. -2. 0. 0. 2. -2.]#e
[ 4. 0. 0. 4. 2. 0. 0. 2. -2.]#s
[ 4. 4. -4. -4. -2. 4. -4. -2. -2.]#t
[ 0. 0. 0. 0. 2. 4. -4. -2. -2.]#h
[ 0. 4. -4. 0. -2. 0. 0. 2. -2.]#i
[ 4. 0. 0. 4. 2. 0. 0. 2. -2.]#s
[ 4. 0. 0. -4. -2. 0. 0. -2. 2.]#u
[ 0. 4. 4. 0. 2. 0. 0. -2. 2.]#o
[ 0. 0. 0. 0. -2. 4. 4. 2. 2.]]#a
Я не знаю, почему vstack
добавляет период вместо запятой (в петлях каждый вектор S имеет запятая, когда я печатаю ее отдельно!).
Мне нужен конечный результат, чтобы быть массивом уникальных векторов (так что в этом случае это будут векторы a-u, то есть 21 вектор).
Как побочное примечание, вызов vstack в цикле для создания матрицы один за другим - это плохая практика. Вместо этого создайте обычный старый список всех ваших векторов, а затем объедините их все сразу. Это уменьшает количество копий, если число векторов велико. –
John, ссылка «Найти уникальные строки», о которой вы упомянули, также имеет ряд решений vstack. И векторные элементы разделены комментариями. Я использую vstack и появляются периоды. Невозможно использовать любой из этих методов для сортировки по массиву. – user3625380
«Периоды, показывающие», не являются проблемой, они нормальные. Они показывают, что ваши номера - это float, а не ints. В списке Python он по умолчанию печатает запятыми между элементами. Точки-vs-запятые не влияют на то, какие данные внутри, это всего лишь дисплей. –