Как объединить np массивы разных форм вместе и разделить на ряд - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь объединить несколько nparrays вместе. Они похожи на следующее:

 array1: [1]
         [0]
         [1]

array2: [ 3  4 14]
        [12  2 30]
        [ 3  4 14]

array3: [ 4  4 14]
        [12  2 30]
        [ 3  4 14]

Чего я хочу добиться:

      (array([3,  4,  14]), 1, array([4, 4, 14))
      (array([12, 2,  30]), 0, array([12,2, 30))
      (array([3,  4,  14]), 1, array([3,4,14]))

Сейчас я питерский питон, и я попытался использовать np.stack, np.concatenate, но ни один не работал. Поэтому мне интересно, как добиться желаемого результата.

1 Ответ

0 голосов
/ 04 мая 2018

numpy функции, такие как np.stack и np.concatenate возврат numpy массивов.

Тем не менее, ваш желаемый результат - , а не a numpy массив. Тип неясен, так как вы не указали, хотите ли вы print значения или сохранить их в list или tuple.

Ниже приведены некоторые допустимые объекты, которые вы можете создать из своих входных данных:

Настройка

import numpy as np

array1 = np.array([[1], [0], [1]])

array2 = np.array([[3, 4, 14],
                   [12, 2, 30],
                   [3, 4, 14]])

array3 = np.array([[4, 4, 14],
                   [12, 2, 30],
                   [3, 4, 14]])

Кортеж кортежей

res = tuple(zip(array2, array1.flatten(), array3))

((array([ 3,  4, 14]), 1, array([ 4,  4, 14])),
 (array([12,  2, 30]), 0, array([12,  2, 30])),
 (array([ 3,  4, 14]), 1, array([ 3,  4, 14])))

Список кортежей

res = list(zip(array2, array1.flatten(), array3))

[(array([ 3,  4, 14]), 1, array([ 4,  4, 14])),
 (array([12,  2, 30]), 0, array([12,  2, 30])),
 (array([ 3,  4, 14]), 1, array([ 3,  4, 14]))]

Единый массив NumPy

res = np.hstack((array2, array1, array3))

array([[ 3,  4, 14,  1,  4,  4, 14],
       [12,  2, 30,  0, 12,  2, 30],
       [ 3,  4, 14,  1,  3,  4, 14]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...