mars.tensor.diff#
- mars.tensor.diff(a, n=1, axis=-1)[来源]#
沿着给定轴计算第 n 个离散差分。
第一个差异由
out[n] = a[n+1] - a[n]在给定轴上给出,通过递归使用 diff 计算更高的差异。- Parameters
- Returns
diff – 第 n 阶差异。输出的形状与 a 相同,除了在 axis 方向上,维度减小了 n。输出的类型与 a 中任意两个元素之间的差异类型相同。在大多数情况下,这与 a 的类型相同。一个显著的例外是 datetime64,它会导致输出张量为 timedelta64。
- Return type
张量
备注
布尔张量的类型被保留,因此当连续元素相同时,结果将包含False,当它们不同时时,结果将包含True。
对于无符号整数张量,结果也将是无符号的。这不应该令人惊讶,因为结果与直接计算差值是一致的:
>>> import mars.tensor as mt
>>> u8_arr = mt.array([1, 0], dtype=mt.uint8) >>> mt.diff(u8_arr).execute() array([255], dtype=uint8) >>> (u8_arr[1,...] - u8_arr[0,...]).execute() 255
如果这不是所期望的,那么数组应该首先转换为更大的整数类型:
>>> i16_arr = u8_arr.astype(mt.int16) >>> mt.diff(i16_arr).execute() array([-1], dtype=int16)
示例
>>> x = mt.array([1, 2, 4, 7, 0]) >>> mt.diff(x).execute() array([ 1, 2, 3, -7]) >>> mt.diff(x, n=2).execute() array([ 1, 1, -10])
>>> x = mt.array([[1, 3, 6, 10], [0, 5, 6, 8]]) >>> mt.diff(x).execute() array([[2, 3, 4], [5, 1, 2]]) >>> mt.diff(x, axis=0).execute() array([[-1, 2, 0, -2]])
>>> x = mt.arange('1066-10-13', '1066-10-16', dtype=mt.datetime64) >>> mt.diff(x).execute() array([1, 1], dtype='timedelta64[D]')