Перестановка пар в массиве в субаррей с соседними парами, имеющими одинаковые элементыPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Перестановка пар в массиве в субаррей с соседними парами, имеющими одинаковые элементы

Сообщение Anonymous »

Привет, у меня есть проблема со следующим массивом Numpy, например: < /p>
a = np.array([[1,2],[2,4],[5,6],[3,4],[7,8],[3,5]])

< /code>
И мне нужен выходной массив: < /p>
[np.array([1,2,2,4,4,3,3,5,5,6]),
np.array([7,8])]
< /code>
Хотя элементы в Subarrays и Array не должны быть в порядке. < /p>
Пары должны быть перевернуты, если они могут быть частью Subarray на выходе. Пары гарантированно имеют не идентичные элементы. < /P>
Моя грубая попытка ниже, но она не дает правильного вывода. < /P>
import numpy as np
def concatenate_neighbouring_pairs(input):
output = []
for i in range(len(input)):
subarray = input

for j in range(1,len(input)):
#print(i,j)
intersect1 = np.in1d(subarray, input[j])
intersect2 = np.in1d(input[j] ,subarray)
#print(intersect1, intersect2)

if intersect1[0] == True and intersect1[-1] == False and intersect2[0] == True and intersect2[-1] == False:
subarray = np.concatenate((np.flip(input[j]),subarray))

elif intersect1[0] == True and intersect1[-1] == False and intersect2[0] == False and intersect2[-1] == True:
subarray = np.concatenate((input[j], subarray))

elif intersect1[0] == False and intersect1[-1] == True and intersect2[0] == True and intersect2[-1] == False:
subarray = np.concatenate((subarray, input[j]))

elif intersect1[0] == False and intersect1[-1] == True and intersect2[0] == False and intersect2[-1] == True:
subarray = np.concatenate((subarray, np.flip(input[j])))

output.append(subarray)
return output
< /code>
Вызов функции выходов: < /p>
[array([1, 2, 2, 4, 4, 3, 3, 5]),
array([2, 4, 4, 3, 3, 5]),
array([3, 5, 5, 6]),
array([5, 3, 3, 4, 4, 2]),
array([7, 8]),
array([4, 3, 3, 5, 5, 6])]


Подробнее здесь: https://stackoverflow.com/questions/796 ... g-the-same
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»