Самый быстрый способ добавить столбец в массиве с определенным значением? - PullRequest
0 голосов
/ 11 ноября 2019

Скорее всего, это дубликат;извинения, поскольку я не мог найти ответ. У меня есть (3000, 3) массив, и я хочу сделать (3000, 4) массив с последним столбцом, являющимся конкретным значением. Я могу сделать очень простой np.insert(x, 1, val, axis=1), чтобы вставить значение перед столбцом 1, но я не могу добавить его в последний столбец с помощью np.insert (). Я могу сделать np.repeat(val, np.shape(x)[0]) или использовать np.hstack(), но они требуют создания массива сначала такой же длины, что и исходный массив (который варьируется) и немного неуклюжий (возможно, это единственный способ), и я предполагаю, что естьлучший способ, если меня интересует только одно значение, которое я хочу добавить.

Есть ли что-нибудь лучше, чем np.concatenate((x, np.repeat(val, np.shape(x)[0])[:, np.newaxis]), axis=1)?

Ответы [ 2 ]

2 голосов
/ 11 ноября 2019

Вы можете выделить больший массив, скопировать старые значения из x и заполнить последний столбец скаляром с небольшой помощью широковещания

y=np.empty_like(x, shape=(3000,4))
y[:,:-1]=x
y[:,-1]=your_value
0 голосов
/ 11 ноября 2019

Я бы предложил использовать np.c_ и np.ones_like, чтобы исключить некоторые детали, но решение аналогично вашему предложению

x=np.c_[x,val*np.ones_like(x[:,0])]

Это не требует выделения памяти для новой матрицы.

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