如何检查序列是否为近似等比序列?附Python实现方案
一种简洁的近似等比序列判断方法
咱们都清楚,一眼判断一个序列是不是近似常数序列特别容易,比如 [1, 1, 1.01, 1, 1]、[3.32, 3.33, 3.37, 3.35, 3.34] 这类。但要判断近似等差序列就麻烦多了,近似等比序列的判断难度更是上了一个台阶。
最近我碰到这么一个序列需要验证是否为近似等比序列:[0.228983, 0.459001, 0.918014, 1.835991, 3.672006, 7.335999, 14.688007],这里分享我用到的实现方案,比逐个元素相除要简洁不少:
import numpy as np delt = np.array([0.228983, 0.459001, 0.918014, 1.835991, 3.672006, 7.335999, 14.688007]) np.diff(np.log(delt)) # 输出结果:array([0.69540462, 0.69316025, 0.69312703, 0.69315372, 0.69205549, 0.69423771])
这个方法利用了对数变换把等比关系转化为等差关系——等比序列取对数后会变成等差序列,所以用np.diff计算对数序列的差分,就能得到近似恒定的差值(对应原序列公比的对数)。相比逐个元素相除再检查结果是否近似恒定,这种方法省去了大量重复输入的繁琐操作,效率高很多。
不确定这个案例算不算简单场景,但亲测好用,特意分享出来,欢迎大家一起讨论改进思路~
内容的提问来源于stack exchange,提问作者Catau
相关产品推荐
相关产品推荐

