Numpy做差分时考虑第一行(和最后一行)

Numpy做差分时考虑第一行(和最后一行)


通过np.diff()可以实现对np.array求差分。以一阶差分为例,直接调用np.diff()得到的结果是后一个值减去前一个值,并没有考虑第一位的值,差分后的维度会比原数据少1,如下所示:

import numpy as np
import random
ar = np.random.randint(20, size=(5,4))
ar
Out[36]: 
array([[ 7,  8, 17, 14],
       [14, 17, 18, 17],
       [ 9,  1, 11, 17],
       [17, 17, 16, 19],
       [18, 12,  6, 14]])
# 对每行差分
ar_row_diff = np.diff(ar,axis=0)
ar_row_diff
Out[37]: 
array([[  7,   9,   1,   3],
       [ -5, -16,  -7,   0],
       [  8,  16,   5,   2],
       [  1,  -5, -10,  -5]])
# 对每列差分
ar_col_diff = np.diff(ar,axis=1)
ar_col_diff
Out[38]: 
array([[ 1,  9, -3],
       [ 3,  1, -1],
       [-8, 10,  6],
       [ 0, -1,  3],
       [-6, -6,  8]])

从以上算例可以看出,对行求差分时,ar_row_diff比ar少一行,对列求差分时,ar_col_diff比ar少一列。如果想要差分后的数据维度和原矩阵一样,即第一行(列)也减去一组什么数,可以通过prepend参数实现如下。

# Case 1
ar_row_diff = np.diff(ar,axis = 0,prepend=ar[-1:,:])
ar_row_diff
Out[40]: 
array([[-11,  -4,  11,   0],
       [  7,   9,   1,   3],
       [ -5, -16,  -7,   0],
       [  8,  16,   5,   2],
       [  1,  -5, -10,  -5]])
# Case 2
ar_col_diff = np.diff(ar,axis = 1,prepend=ar[:,0:1])
ar_col_diff
Out[42]: 
array([[ 0,  1,  9, -3],
       [ 0,  3,  1, -1],
       [ 0, -8, 10,  6],
       [ 0,  0, -1,  3],
       [ 0, -6, -6,  8]])

其中Case 1是对行求差分,ar_row_diff的第一行为ar的第一行减去最后一行;Case 2是对列求差分,ar_col_diff的第一列为ar的第一列减去它本身。

可以看出,当我想要在求差分时让第一行(列)也减去某组值时,可以将该值赋给prepend参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值