numpy.ma.diff
- ma.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за исключением оси.
- Возвращает:
-
- diffMaskedArray
-
n-ые разности. Форма выходного массива такая же, как
aза исключениемaxis, где размерность меньше наn. Тип выходного массива такой же, как тип разности между любыми двумя элементамиa. Это совпадает с типомaв большинстве случаев. Заметное исключение —datetime64, что приводит к выходному массиву типаtimedelta64.
См. также
numpy.diff-
Эквивалентная функция в модуле NumPy верхнего уровня.
Примечания
Тип сохраняется для булевых массивов, поэтому результат будет содержать
Falseкогда последовательные элементы одинаковы иTrueкогда они отличаются.Для массивов целых чисел без знака результаты также будут без знака. Это не должно вызывать удивления, поскольку результат соответствует прямому вычислению разности:
>>> u8_arr = np.array([1, 0], dtype=np.uint8) >>> np.ma.diff(u8_arr) masked_array(data=[255], mask=False, fill_value=np.int64(999999), dtype=uint8) >>> u8_arr[1,...] - u8_arr[0,...] 255Если это нежелательно, то массив следует предварительно привести к типу с большей разрядностью:
>>> i16_arr = u8_arr.astype(np.int16) >>> np.ma.diff(i16_arr) masked_array(data=[-1], mask=False, fill_value=np.int64(999999), dtype=int16)Примеры
>>> a = np.array([1, 2, 3, 4, 7, 0, 2, 3]) >>> x = np.ma.masked_where(a < 2, a) >>> np.ma.diff(x) masked_array(data=[--, 1, 1, 3, --, --, 1], mask=[ True, False, False, False, True, True, False], fill_value=999999)>>> np.ma.diff(x, n=2) masked_array(data=[--, 0, 2, --, --, --], mask=[ True, False, False, True, True, True], fill_value=999999)>>> a = np.array([[1, 3, 1, 5, 10], [0, 1, 5, 6, 8]]) >>> x = np.ma.masked_equal(a, value=1) >>> np.ma.diff(x) masked_array( data=[[--, --, --, 5], [--, --, 1, 2]], mask=[[ True, True, True, False], [ True, True, False, False]], fill_value=1)>>> np.ma.diff(x, axis=0) masked_array(data=[[--, --, --, 1, -2]], mask=[[ True, True, True, False, False]], fill_value=1)
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.ma.diff.html