数据处理---获取某个字符后连续字符/数字的长度

区分状态

在数据处理的过程中,比如脉冲星信号处理,有些脉冲星辐射有消零现象存在,或者模式变换时,有三种状态,将这三种状态用数值表示为:0.0, 0.5,1.0. 在分析的过程中,需要计算在某个状态后,另一状态的持续时间。在此,演示这一计算过程的代码。

所用计算机语言:python

数据形式如下:

0.0
1.0
1.0
0.0
0.5
1.0
1.0
0.5
1.0
0.5
0.0
0.0
1.0
1.0
1.0
1.0
0.5
1.0
1.0
1.0
1.0
0.0
1.0
0.5
0.5
0.5
1.0
1.0
1.0
1.0
0.5
0.0
1.0
0.0
0.0
0.0
1.0
1.0
1.0
0.0
0.5
0.0
1.0
0.5
1.0
1.0
1.0
0.0
1.0
0.0
0.0
1.0
1.0
0.5

数据为ascii文件,

import numpy as np
data=np.genfromtxt('psr.txt',dtype='float64')
null_index = []
pulse_5_index =[]
pulse_index = []
for i in range(len(data)):
    if data[i] ==0.0:
        #print(i)
        null_index.append(i)
    elif data[i]==0.5:
        pulse_5_index.append(i)
    elif data[i] ==1.0:
        pulse_index.append(i)

con_pul = []
coni = [pulse_index[0]]
i = 1
while  i < (len(pulse_index)):
    if pulse_index[i] - pulse_index[i-1] ==1:
        coni.append(pulse_index[i])
    else :
        con_pul.append(coni)
        coni = []
        coni.append(pulse_index[i])
    i +=1

num_1 = []
for i in con_pul:
    print(type(null_index),type(int(np.min(i))))
    index1_min = int(np.min(i))-1
    print(index1_min)
    if index1_min in null_index:
        num_1.append(len(i))
## num_1 is you need
print(num_1)
## num_1 就是在0.0后的1.0的持续长度

end

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐