np.concatenate не допускает последовательную конкатенацию - PullRequest
0 голосов
/ 06 мая 2020

Я пытался объединить два одномерных массива с помощью np.concatenate, но это не работает должным образом. Может ли кто-нибудь сообщить мне, где я делаю ошибку?

Мой код выглядит следующим образом:

x = np.array([1.13793103, 0.24137931, 0.48275862, 1.24137931, 1.00000000, 1.89655172])
y = np.array([0.03666667, 0.00888889, 0.01555556, 0.04      , 0.03222222, 0.06111111])

z = np.concatenate((x,y), axis=0)

print(z)
array([1.13793103, 0.24137931, 0.48275862, ... 0.04, 0.03222222, 0.06111111])

print(f'{type(x)} {type(y)} {type(z)}')
<class 'numpy.ndarray'> <class 'numpy.ndarray'> <class 'numpy.ndarray'>

print(f'{x.shape} {y.shape} {z.shape}')
(6,) (6,) (12,)

Итак, вместо добавления y в качестве нового массива он объединяет два массивы, что не является моим намерением. Ищу примерно следующее:

array([1.13793103, 0.24137931, 0.48275862, 1.24137931, 1.00000000, 1.89655172],
      [0.03666667, 0.00888889, 0.01555556, 0.04      , 0.03222222, 0.06111111])

1 Ответ

1 голос
/ 06 мая 2020

Вы можете использовать np.concatenate для объединения вдоль некоторой оси, если это измерение существует в массивах, которые вы хотите объединить:

x = np.array([1,2,3])
y = np.array([4,5,6])

здесь, x и y имеют shape (3,), поэтому только один ось. Это означает, что вы можете объединить только по этой оси (т.е. ось = 0):

z = np.concatenate((x,y))
z.shape
out : (6,)

объединение по оси = 1 вызовет ошибку:

z = np.concatenate((x,y), axis=1)
AxisError: axis 1 is out of bounds for array of dimension 1

Вы можете сделать np.concatenate работать, если вы измените форму x и y:

x, y = x.reshape(-1,1), y.reshape(-1,1)

Теперь оба имеют форму (3,1) и могут быть объединены по оси 1:

z = np.concatenate((x.reshape(-1,1),y.reshape(-1,1)),axis=1)
z.shape
(6,2)

в качестве альтернативы вы можете изменить форму на (1,3) и объедините по оси 0:

z = np.concatenate((x.reshape(1,-1),y.reshape(1,-1)),axis=0)
z.shape
(2,6)

или вы используете np.vstack, что не требует изменения формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...