python – np.array中某个长度的连续部分的Min-Max差异
发布时间:2020-12-20 11:34:51 所属栏目:Python 来源:网络整理
导读:我有一个像这样的numpy值数组: a = np.array((1,3,4,5,10)) 在这种情况下,数组的长度为5.现在我想知道数组中最低值和最高值之间的差异,但仅在数组的某个连续部分内,例如长度为3. 因此,在这种情况下,它将是4和10之间的差异,所以6.具有连续部分的起始点的索引
我有一个像这样的numpy值数组:
a = np.array((1,3,4,5,10)) 在这种情况下,数组的长度为5.现在我想知道数组中最低值和最高值之间的差异,但仅在数组的某个连续部分内,例如长度为3. 因此,在这种情况下,它将是4和10之间的差异,所以6.具有连续部分的起始点的索引(在上面的示例中将是2)也是很好的.所以像这样: def f(a,lenght_of_part): ... return (max_difference,starting index) 我知道我可以遍历数组的切片部分,但是对于我的实际目的,我有~150k长度为1500的数组,所以这需要太长时间. 这样做简单快捷的方法是什么? 提前致谢! 解决方法
在Numpy以矢量化方式完成这一点有点棘手.一种选择是使用numpy.lib.stride_tricks.as_strided,这需要小心,因为它允许访问任意内存.这是一个窗口大小为k = 3的示例:
>>> k = 3 >>> shape = (len(a) - k + 1,k) >>> b = numpy.lib.stride_tricks.as_strided( a,shape=shape,strides=(a.itemsize,a.itemsize)) >>> moving_ptp = b.ptp(axis=1) >>> start_index = moving_ptp.argmax() >>> moving_ptp[start_index] 6 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |