Я очень новичок в питоне. Я задавался вопросом, как я могу объединить массивы a и b таким конкретным способом.
Я пытался использовать stack, 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]],
]
Проблема в том, что у вас есть зубчатый массив. Другими словами, каждый подсписок в вашем списке списков не имеет одинаковую длину, поэтому вы не можете создать обычный массив 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)
Вы можете использовать список понимания. Использование 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], [1, 2, 3]), ([1], [1, 2, 3]), ([2], [1, 2, 3]), ([3], [1, 2, 3]), ([4], [1, 2, 3]), ([5], [1, 2, 3])]
Ваши массивы выглядят как списки, в этом случае может помочь следующее
c=[list(i) for i in zip(a,b)]
в противном случае, если они являются массивами numy, эта ссылка может вам помочь.
[([0], [1, 2, 3]), ([1], [1, 2, 3]), ([2], [1, 2, 3]), ([3], [1, 2, 3]), ([4], [1, 2, 3]), ([5], [1, 2, 3])]
c
начинать с[[0],[1,2,3]]
?[0]
действительно элемент в ?a
потому что это означает, что слияние выбрасывает