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, необязательно
-
Количество раз, когда значения различаются. Если ноль, входной массив возвращается без изменений.
- axisint, необязательно
-
Ось, по которой выполняется различие, по умолчанию последняя ось.
- prepend, appendarray_like, необязательно
-
Значения для добавления в начало или конец
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–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.diff.html