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–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.diff.html