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.19/reference/generated/numpy.diff.html