记录Numpy.diff函数的个人理解
基本使用
np.diff()做了数组中元素的减法。比如:
m = np.array([1,3,10])
n = np.diff(m)
print(n)
对[1,3,10]数组计算后的结果是:[2 7]。显然,3-1=2,10-3=7,基本用法很简单。若要进一步使用,就要知道这个函数有哪些参数以及参数的意义。
np.diff的参数
它的用法:
x = np.diff(arr,n,axis= )
arr——进行操作的数组对象。
n——执行减法的次数。默认值是1。比如:
m = np.array([7,11,18,20])
n1 = np.diff(m)
n2 = np.diff(m,2)
n1为[4,7,2]——11-7,18-11,20-18
n2为[3,-5]——7-4,2-7
axis——轴的选择,0代表0轴,1代表1轴,以此类推。比如:
a = np.array([ [[1,1,1,1],[1,3,2,1],[3,2,0,1]],[[2,1,1,1],[5,2,2,2],[6,1,0,1]]])
a.shape是(2, 3, 4),说明它的axis共有3个轴可供选择:0轴,1轴,2轴。且0轴对应2个维度,1轴对应3个维度,2轴对应4个维度。给axis设置不同的值,数组中元素相减的模式就会不同,最后输出结果的shape也不同。
接下来介绍每一种不同维度相减模式。
axis=0
设置axis为0,即在0轴的维度下进行元素的相减,方法是后一个维度的元素减去前一个维度的元素。
相减的过程就是:
2-1,1-1,1-1,1-1
5-1,2-3,2-2,2-1
6-3,1-2,0-0,1-1
然后得到一个数组如下图,我们设它为a1。
a1.shape是(1, 3, 4),比原数组a在0轴上少了一个维度。
axis=1
设置axis为1,即在1轴的层面进行相邻维度的元素减法。
方法:1轴2维度的元素减去1轴1维度的元素,1轴3维度的元素减去1轴2维度的元素。
因为0轴的每个维度中都有3个1轴的维度,所以这样的减法总共进行两组。
相减的过程就是:
1-1,3-1,2-1,1-1
3-1,2-3,0-2,1-1
5-2,2-1,2-1,2-1
6-5,1-2,0-0,1-1
然后得到一个数组如下图,我们设它为a2。
a1.shape是(2, 2, 4),比原数组a在1轴上少了一个维度。
axis=2
同理,设置为2的例子不做过多的赘述了。总之就是2轴的4个维度做3次减法,最后得到的数组是一个(2,3,3)的数组。