Numpy добавить столбец значений в многомерный массив для дифференциации - PullRequest
0 голосов
/ 08 мая 2018

У меня есть массив формы следующим образом: (162060, 2, 128) Я провел дифференцирование, используя numpy.diff (шаг равен 1) Теперь форма дифференцированного массива: (162060, 2, 127), и я хочу получить предыдущую форму, добавив нули к первому столбцу из 2 массивов каждого элемента, т.е. (2 127) -> (2 128)

как я могу это сделать? использование numpy.concatenate не помогает, так как добавляет к концу, и я хочу, чтобы нули были в начале

Ответы [ 3 ]

0 голосов
/ 08 мая 2018

Если вы хотите добавить нули (в качестве примера), вы можете использовать функцию numpy.pad():

import numpy as np
np.pad(array_to_expand, ((0, 0), (0, 0), (1, 0)), 'constant', constant_values=0)

Другой вариант - использовать numpy.dstack:

np.dstack([np.zeros((162060, 2)), array_to_expand])

или

np.dstack([np.zeros(array_to_expand.shape[:2]), array_to_expand])

Ах, и, наконец, numpy.concatenate:

np.concatenate([np.zeros((162060, 2, 1)), array_to_expand], axis=2)
* * Или тысяча двадцать-один,
np.concatenate([np.zeros(array_to_expand.shape[:2] + (1,)), array_to_expand], axis=2)
0 голосов
/ 08 мая 2018

Хотя вы можете расширить способы других ответов (или, если на то пошло, правильное использование сцепления), я думаю, что с точки зрения читабельности кода имеет смысл создать массив размера записи. и явно дифференцировать в этот массив. Для меня это самая читаемая версия.

derivatives = np.zeros_like(values)
derivatives[:,:,1:] = np.diff(values)
0 голосов
/ 08 мая 2018

Вы ищете numy вставку. Прочитайте документацию здесь.

Обновление

Чтобы использовать функцию вставки numpys, выполните следующие действия:

X = np.insert(X, pos, obj, axis=0)
  1. X указывает целевой объект для вставки в

  2. pos указывает, куда вставить

  3. obj указывает, что вставить

  4. axis = 0 является необязательным и указывает ось, вдоль которой вводятся значения. Если ось отсутствует, то arr сначала выравнивается.

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