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рекурсивно.- Параметры
-
-
aarray_like -
Входной массив
-
nint, optional -
Количество раз, когда значения различаются. Если ноль, входной массив возвращается как есть.
-
axisint, optional -
Ось, по которой берется разность, по умолчанию - последняя ось.
-
prepend, appendarray_like, optional -
Значения, которые нужно добавить или удалить в начале или конце
aпо оси перед выполнением разности. Скалярные значения расширяются до массивов длиной 1 в направлении оси и формы входного массива по всем другим осям. В противном случае размерность и форма должны совпадать сaза исключением оси.Новое в версии 1.16.0.
-
- Возвращает
-
-
diffndarray -
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–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/generated/numpy.diff.html