Добавить значение к каждому массиву в массиве NumPy - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть массив массивов, например:

x = np.array([[1,2,3],[10,20,30]])

Теперь допустим, что я хочу расширить каждый массив на [4,40], чтобы сгенерировать следующий результирующий массив:

[[1,2,3,4],[10,20,30,40]]

Как я могу сделать это, не делая копию всего массива?Я попытался изменить форму массива на месте, но он выдает ошибку ValueError:

x[0] = np.append(x[0],4)
x[1] = np.append(x[1],40)
ValueError : could not broadcast input array from shape (4) into shape (3)

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018
  1. Создать новую матрицу
  2. Вставьте значения вашей старой матрицы
  3. Затем вставьте новые значения в последние позиции

    x = np.array([[1,2,3],[10,20,30]])
    new_X = np.zeros((2, 4))
    new_X[:2,:3] = x 
    new_X[0][-1] = 4
    new_X[1][-1] = 40
    x=new_X
    

Или используйте взамен np.reshape () или np.resize ()

0 голосов
/ 21 ноября 2018

Вы не можете сделать это.Числовые массивы выделяют смежные блоки памяти, если это вообще возможно.Любое изменение размера массива приведет к неэффективной копии всего массива.Вы должны использовать списки Python для расширения вашей структуры, если это возможно, а затем преобразовать конечный результат обратно в массив.

Однако, если вы знаете конечный размер полученного массива, вы можете создать его экземпляр с помощью чего-то вроде np.empty() а затем присваивайте значения по индексу, а не добавляяЭто не меняет размер самого массива, а только переназначает значения, поэтому не требует копирования.

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