我有数组,需要动态窗口的最大滚动差异。
a = np.array([8, 18, 5,15,12])
print (a)
[ 8 18 5 15 12]
所以首先我自己创造差异:
b = a - a[:, None]
print (b)
[[ 0 10 -3 7 4]
[-10 0 -13 -3 -6]
[ 3 13 0 10 7]
[ -7 3 -10 0 -3]
[ -4 6 -7 3 0]]
然后将上三角矩阵替换为0:
c = np.tril(b)
print (c)
[[ 0 0 0 0 0]
[-10 0 0 0 0]
[ 3 13 0 0 0]
[ -7 3 -10 0 0]
[ -4 6 -7 3 0]]
最后需要每个对角线的最大值,所以这意味着:
max([0,0,0,0,0]) = 0
max([-10,13,-10,3]) = 13
max([3,3,-7]) = 3
max([-7,6]) = 6
max([-4]) = -4
所以预期的输出是:
[0, 13, 3, 6, -4]
什么是一些不错的矢量化解决方案?或者是否可以通过其他方式获得预期的输出?