Как объединить два массива таким специфическим способом - PullRequest
0 голосов
/ 09 января 2019

Я очень плохо знаком с Python. Мне было интересно, как я могу объединить массивы a и b таким образом.

Я пытался использовать стек, vstack, hstack, concatenate и многое другое, но я все еще не могу получить желаемый результат.

a=  [[   0],
     [   1],
     [   2],
     [   3],
     [   4],
     [   5],
     [   6]]

b=  [[1,2,3],
     [1,2,3],
     [1,2,3],
     [1,2,3],
     [1,2,3],
     [1,2,3],
     [1,2,3]]

c = np.somefunction(a,b)


c = [
    [[0],[1,2,3]],
    [[1],[1,2,3]],
    [[2],[1,2,3]],
    [[3],[1,2,3]],
    [[4],[1,2,3]],
    [[5],[1,2,3]],
    [[6],[1,2,3]],
    ]

Ответы [ 4 ]

0 голосов
/ 09 января 2019

ваши массивы выглядят как списки, в этом случае может помочь следующее

c=[list(i) for i in zip(a,b)]

В противном случае, если они являются массивами, эта ссылка может вам помочь.

0 голосов
/ 09 января 2019

ааа и бум:

c = list(zip(a,b))
print([list(x) for x in c])

pyFiddle

0 голосов
/ 09 января 2019

Вы можете использовать списки. Использование concatenate от NumPy здесь не сработает из-за несоответствия размеров двух массивов. Здесь я предполагаю, что вы хотите запустить массив a с 1. Если нет, то вы можете просто заменить a[1:] на a.

c = [list(i) for i in zip(a[1:],b)]

[[[1], [1, 2, 3]],
 [[2], [1, 2, 3]],
 [[3], [1, 2, 3]],
 [[4], [1, 2, 3]],
 [[5], [1, 2, 3]],
 [[6], [1, 2, 3]]]
0 голосов
/ 09 января 2019

Проблема в том, что у вас есть зубчатый массив . Другими словами, каждый подсписок в вашем списке списков не имеет одинаковую длину, поэтому вы не можете создать обычный массив NumPy int.

Таким образом, вы можете использовать простое понимание списка или map. Я предполагаю, что ваш список a начинается с [0] и заканчивается [5]:

c = [[i, j] for i, j in zip(a, b)]  # list comprehension
c = list(map(list, zip(a, b)))      # functional version

# [[[0], [1, 2, 3]],
#  [[1], [1, 2, 3]],
#  [[2], [1, 2, 3]],
#  [[3], [1, 2, 3]],
#  [[4], [1, 2, 3]],
#  [[5], [1, 2, 3]]]

Преобразование этого в массив возможно, но оно будет иметь object dtype. Для большинства целей он будет мало полезен по сравнению с обычным списком списков Python:

c_arr = np.array(c)

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