Numpy объединить по оси - PullRequest
       0

Numpy объединить по оси

0 голосов
/ 24 января 2020

У меня есть массив arr, который представляет n перестановок m координат. С каждой перестановкой я пытаюсь вычислить общее расстояние туда и обратно (проблема связана с проблемой путешествующего продавца). Чтобы сделать это, я конкатенировал первую координату каждой перестановки, а затем вычислил расстояние туда и обратно, используя np.linalg.norm.

array([[[40, 30],
        [37, 52],
        [52, 64],
        [49, 49],
        [20, 26]],

       [[52, 64],
        [49, 49],
        [40, 30],
        [20, 26],
        [37, 52]]])

Чтобы получить последовательности координат туда и обратно, я использовал следующее .

>>> np.array([np.concatenate((a, a[0, np.newaxis])) for a in arr])

array([[[40, 30],
        [37, 52],
        [52, 64],
        [49, 49],
        [20, 26],
        [40, 30]], # First coordinate concatenated

       [[52, 64],
        [49, 49],
        [40, 30],
        [20, 26],
        [37, 52],
        [52, 64]]]) # First coordinate concatenated

Есть ли встроенная NumPy функциональность для достижения этой цели?

1 Ответ

1 голос
/ 24 января 2020
a = np.array([[[40, 30],
        [37, 52],
        [52, 64],
        [49, 49],
        [20, 26]],

       [[52, 64],
        [49, 49],
        [40, 30],
        [20, 26],
        [37, 52]]])
a = np.concatenate(a, axis=1)  # merge into single array
a = np.concatenate((a,a[0,np.newaxis])) # add ending coordinates
N=2  # replace with number of merged arrays
result = np.split(a,N, axis=1)  # list of arrays
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...