numpy.diff
-
numpy.diff(a, n=1, axis=-1)[source] -
Вычисление n-й дискретной разницы по заданной оси.
Первая разница определяется как
out[n] = a[n+1] - a[n]по заданной оси, более высокие разницы рассчитываются с помощьюdiffрекурсивно.Параметры: -
a : array_like -
Массив входных данных
-
n : int, optional -
Количество раз, когда значения различаются. Если ноль, то входной массив возвращается без изменений.
-
axis : int, optional -
Ось, по которой берётся разница, по умолчанию — последняя ось.
Возвращаемое значение: -
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,...] array(255, np.uint8)
Если этого не требуется, то массив следует сначала привести к типу с большей разрядностью:
>>> 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.15.4/reference/generated/numpy.diff.html