FWHM
#input (1,1.5,1.7,1.3,1.6,1.3)
h = 1.3
index = np.where(np.diff((T > h).astype(int)))[0]
print(T > h):[F,T,T,F,T,F]
#布尔判定
(T > h).astype(int) :[0,1,1,0,1,0]
#是非转化
np.diff((T > h).astype(int)):[1,0,-1,1,-1]
np.where(np.diff((T > h).astype(int))):
[1,2,4],,dtype=int64 tuple
np.where(np.diff((T > h).astype(int)))[0]:
(array([0, 2, 3, 4], dtype=int64)
index = np.where(np.diff((T > h).astype(int)))[0]
的作用是找出数组 T
中元素值首次穿越给定阈值 h
的位置:
具体步骤
1、T > h 逐元素比较,比较数组 T
的每个元素是否大于阈值 h
。结果是一个布尔数组,其中 True
表示 T
中的元素大于 h
,False
表示不大于。
2、(T > h).astype(int)
: 这一步将布尔数组转换成整数数组。在这个整数数组中,1
表示原数组 T
的元素大于 h
,0
表示不大于。
3、np.diff(...)
: np.diff
函数计算数组中连续元素的差值。在这个上下文中,它用于确定 T
数组中元素值何时穿越 h
的值。穿越点的标志是 1
(从 0
变为 1
,即从 False
变为 True
)和 -1
(从 1
变为 0
,即从 True
变为 False
)。
4、np.where(...)
: 这个函数找出数组中非零元素的索引。在这里,它用于找到 np.diff
计算结果中非零的位置,即 T
数组中值穿越 h
的位置。
所以,index
数组包含了 T
中元素值首次上升穿越 h
和下降穿越 h
的位置的索引。这对于确定元素值如何随时间或位置变化穿越特定阈值非常有用,尤其是在信号处理和数据分析中。