Мне нужно преобразовать два массива в определенную форму
import numpy as np
x = np.array([(1, 2, 3, 4, 5), (6, 7, 8, 9)])
y = np.array([(10, 11, 12, 13, 14), (15, 16, 17, 18)])
Я уже использовал np.column_stack(x,y)
np.column_stack((x,y))
получить:
array([[(1, 2, 3, 4, 5), (10, 11, 12, 13, 14)],
[(6, 7, 8, 9), (15, 16, 17, 18)]])
однако теперь мне нужен массив, чтобы получить следующую форму:
array([[(1, 2, 3, 4, 5, 10, 11, 12, 13, 14)],
[(6, 7, 8, 9, 15, 16, 17, 18)]])
Это возможно?
Спасибо!!
Вы точно показываете скобки и скобки?
Привет, @stijn, не забывай, что ты можешь голосовать и принимать ответы, см. Что мне делать, когда кто-то отвечает на мой вопрос?
@yatu Я сделал, но, поскольку я новичок, он не зарегистрировал это или что-то в этом роде
Стекирование вводит новое измерение. Вы хотите конкатенацию по столбцам (ось существующий 1):
np.concatenate((x, y), axis=1)
Это дало мне следующую ошибку: AxisError: ось 1 выходит за пределы массива размерности 1.
@Stijn. Ааа. Вы действительно используете кортежи? Почему?
Учитывая, что у вас есть массив tuples
, вы можете добавить их вдоль первой оси:
np.sum([x,y], axis=0)[:,None]
[[(1, 2, 3, 4, 5, 10, 11, 12, 13, 14)]
[(6, 7, 8, 9, 15, 16, 17, 18)]]
Спасибо, это сделало это для меня!
Однако обратите внимание, что для определения внутренних массивов в массиве numpy вы должны использовать скобки, а не круглые скобки. В противном случае у вас будет массив кортежей, и вы не сможете применять большинство векторизованных операций.
@Stijn. Вы должны выбрать этот ответ, нажав на галочку рядом с ним
пытаться
import numpy as np
x = np.array([(1, 2, 3, 4, 5), (6, 7, 8, 9)])
y = np.array([(10, 11, 12, 13, 14), (15, 16, 17, 18)])
np.sum([x,y], axis=0)
массив([(1, 2, 3, 4, 5, 10, 11, 12, 13, 14), (6, 7, 8, 9, 15, 16, 17, 18)], тип = объект)
Это должно работать!
z = np.column_stack((x,y))
out = np.array([tuple(np.concatenate(z[0,:])), tuple(np.concatenate(z[1,:]))]).reshape((2,1))
Объединить по оси 1