numpy.diff
-
numpy.diff(a, n=1, axis=-1, prepend=<no value>, append=<no value>)[source] -
Вычислить n-е дискретное разность по заданной оси.
Первая разность задается
out[i] = a[i+1] - a[i]по заданной оси, более высокие разности рассчитываются с помощьюdiffрекурсивно.Параметры: -
a : array_like -
Массив входных данных
-
n : int, optional -
Количество раз, когда значения различаются. Если ноль, вход возвращается как есть.
-
axis : int, optional -
Ось, по которой берется разность, по умолчанию — последняя ось.
-
prepend, append : array_like, optional -
Значения, которые нужно добавить в начало или конец “a” вдоль оси перед выполнением разности. Скалярные значения расширяются до массивов длиной 1 в направлении оси и формой входного массива вдоль всех других осей. В противном случае размерность и форма должны совпадать с “a” за исключением оси.
Возвращает: -
diff : ndarray -
n-е разности. Форма выходного значения такая же, как
a, за исключениемaxis, где размерность меньше наn. Тип выходного значения такой же, как тип разности между любыми двумя элементамиa. В большинстве случаев это соответствует типуa. Заметное исключение —datetime64, которое приводит кtimedelta64массиву.
Примечания
Тип сохраняется для булевых массивов, поэтому результат будет содержать
Falseкогда последовательные элементы одинаковы иTrueкогда они отличаются.Для массивов целых без знака результаты также будут без знака. Это не должно удивлять, так как результат согласуется с прямым вычислением разности:
>>> u8_arr = np.array([1, 0], dtype=np.uint8) >>> np.diff(u8_arr) array([255], dtype=uint8) >>> u8_arr[1,...] - u8_arr[0,...] 255
Если это нежелательно, то массив необходимо сначала привести к большему целочисленному типу:
>>> i16_arr = u8_arr.astype(np.int16) >>> np.diff(i16_arr) array([-1], dtype=int16)
Примеры
>>> x = np.array([1, 2, 4, 7, 0]) >>> np.diff(x) array([ 1, 2, 3, -7]) >>> np.diff(x, n=2) array([ 1, 1, -10])
>>> x = np.array([[1, 3, 6, 10], [0, 5, 6, 8]]) >>> np.diff(x) array([[2, 3, 4], [5, 1, 2]]) >>> np.diff(x, axis=0) array([[-1, 2, 0, -2]])>>> x = np.arange('1066-10-13', '1066-10-16', dtype=np.datetime64) >>> np.diff(x) array([1, 1], dtype='timedelta64[D]') -
© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.17.0/reference/generated/numpy.diff.html