Numpy add (добавление) значение к каждой строке 2-го массива - PullRequest
0 голосов
/ 18 октября 2018

У меня есть массив массивов с плавающей точкой формы (x, 14), и я хотел бы добавить в конец каждой «строки» еще одно значение (для каждой строки различное значение), чтобы конечный результат имел форму (x,15).

Можно предположить, что у меня есть эти значения в каком-то списке, так что часть вопроса также определена.

Как это сделать с функциями numpy?

1 Ответ

0 голосов
/ 18 октября 2018

Определите двумерный массив и список:

In [73]: arr = np.arange(12).reshape(4,3)
In [74]: arr
Out[74]: 
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11]])
In [75]: alist = [10,11,12,13]

Обратите внимание на их формы:

In [76]: arr.shape
Out[76]: (4, 3)
In [77]: np.array(alist).shape
Out[77]: (4,)

Чтобы присоединиться alist к arr, оно должно иметь одинаковое количестворазмеры и такое же количество «строк».Мы можем сделать это, добавив измерение с None идиомой:

In [78]: np.array(alist)[:,None].shape
Out[78]: (4, 1)

Теперь мы можем объединить по 2-й оси:

In [79]: np.concatenate((arr, np.array(alist)[:,None]),axis=1)
Out[79]: 
array([[ 0,  1,  2, 10],
       [ 3,  4,  5, 11],
       [ 6,  7,  8, 12],
       [ 9, 10, 11, 13]])

column_stack делает то же самое,заботясь о том, чтобы каждый вход был как минимум 2d (я бы посоветовал прочитать его код.) В долгосрочной перспективе вы должны быть достаточно знакомы с размерами и формами, чтобы сделать это с простым concatenate.

In [81]: np.column_stack((arr, alist))
Out[81]: 
array([[ 0,  1,  2, 10],
       [ 3,  4,  5, 11],
       [ 6,  7,  8, 12],
       [ 9, 10, 11, 13]])

np.c_ также делает это - но обратите внимание на использование [] вместо ().Это умное использование индексной нотации, удобное, но потенциально запутанное.

np.c_[arr, alist]
np.r_['-1,2,0', arr, alist]  # for more clever obscurity 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...