2016-08-30 6 views
0

У меня есть 2D массив x, в котором я хочу, чтобы скопировать содержимое из массива 1D y:Поместите 1D массив в 2D массив

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

x[:,:] = y # i would like x to be [[1, 2], [3, 4], [5, 6]] 

ValueError: could not broadcast input array from shape (6) into shape (3,2)

Как это сделать?

ответ

1

Вы должны преобразовать y в массив с формой, как x:

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

Но обратите внимание, что y следует изменить с формой x «s.

+0

Я бы использовал 'x [...] = y.reshape (x.shape)', чтобы оставаться ближе к исходному намерению. 'x.flat = y' также работает. – hpaulj

+0

@hpaulj Поскольку OP только хотел изменить 'x', я не видел никаких причин назначать' y' его виду. Или у вашего рецепта есть какое-то преимущество здесь, о котором я не знаю? – Kasramvd

Смежные вопросы