как включить первый элемент списка перед вычислением разницы - PullRequest
0 голосов
/ 20 апреля 2020

Я создаю гистограмму. В настоящее время у меня есть этот блок кода:

g = [479, 481, 503, 525, 554, 586, 614, 669, 683]

, а затем я написал это для осей X и Y:

x =[28, 27, 26, 25, 24, 23, 22, 21, 20]
y = diff(g)

Это то, что он вычисляет у как:

array([  2,  22,  22,  29,  32,  28,  55,  14])

Однако я понял, что моя гистограмма не включает 479 (первый элемент в g), прежде чем она начнет вычислять разницу оттуда, что я и надеялся сделать. Мой желаемый результат -

array([ 479, 2,  22,  22,  29,  32,  28,  55,  14])

Есть ли способ, которым я могу это сделать? Я не хочу добавлять его вручную, поскольку мне нужно автоматизировать его для различных файлов.

1 Ответ

1 голос
/ 20 апреля 2020

Существует два основных способа добавления элементов к diff : до или после факта. Если вы хотите добавить ноль раньше, вы можете использовать аргумент prepend, доступный с v1.16.0:

y = np.diff(g, prepend=0)

Это эквивалентно ручной вставке нуля в ваш массив (в случае, если ваша версия из numpy старше):

y = np.diff(np.insert(g, 0, 0))

Вы можете сделать что-то очень похожее после различий, вставив g[0] в начало:

y = np.insert(np.diff(g), 0, g[0])

Однако все параметры показанные здесь неэффективны, потому что они копируют все ваши данные (g или diff). Решение с эффективным использованием пространства выделит выходной буфер и вычислит разницу вручную:

y = np.empty_like(g)
y[1:] = g[1:] - g[:-1]
y[0] = g[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...