57
задан 23 May 2017 в 14:46

2 ответа

Можно также сделать это с Пандами:

Используя 2356-долгий массив:

import numpy as np

xs = np.array([...])

Используя scipy:

from scipy.ndimage.interpolation import shift

%timeit shift(xs, 1, cval=np.nan)
# 956 µs ± 77.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

Используя Панд:

import pandas as pd

%timeit pd.Series(xs).shift(1).values
# 377 µs ± 9.42 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

В этом примере, использование Панд было приблизительно в ~8 раз быстрее, чем Scipy

0
ответ дан 1 November 2019 в 16:10

Если Вы хотите остроту от numpy и не слишком обеспокоены производительностью, попробуйте:

np.sum(np.diag(the_array,1),0)[:-1]

Объяснение: np.diag(the_array,1) создает матрицу с Вашим массивом, одноразовым диагональ, np.sum(...,0) суммы матрица по столбцам, и ...[:-1] берет элементы, которые соответствовали бы размеру исходного массива. При проигрывании вокруг с 1 и :-1, поскольку параметры могут дать Вам, переключает различные направления на нижний регистр.

0
ответ дан 1 November 2019 в 16:10

Другие вопросы по тегам:

Похожие вопросы: