从数据帧中查找频率并将值存储在数组中



我正在尝试编写一个python代码,以获取零值之间连续出现非零值的次数。计数频率并存储一次出现的非零数,在数组中的零之间是容易和简单的。但当我尝试为连续出现6个以上的非零进行编码时,问题就出现了,即代码开始变得太长。以下是我尝试过的

rain_15Min = np.array([0,15,15,15,4,0,5,5,5,90,0,30,4,3,30,32,0,0,45,45,45,4,50,0,3,4,5,0,0,0,6,7,5,5])
R_75min=[]
# for 75 Minutes duration    
for i in range(len(rain_15Min)-5): 
if rain_15Min[i]!= 0 and rain_15Min[i-1]== 0 and rain_15Min[i+1] !=0 and rain_15Min[i+2] !=0 and rain_15Min[i+3] !=0 and rain_15Min[i+4] !=0 and rain_15Min[i+5] == 0:
R_75min.append(rain_15Min[i:i+5])
print("The frequency of 60min rainfall is: ")
print(len(R_75min))
print(R_75min)

可以使用生成器。

def chunker(items):
chunk = []
for item in items:
if item != 0:
chunk.append(item)
else:
if chunk:
yield chunk
chunk = []
if chunk:
yield chunk

rain_15Min = [0,15,15,15,4,0,5,5,5,90,0,30,4,3,30,32,0,0,45,45,45,4,50,0,3,4,5,0,0,0,6,7,5,5]
chunks = [chunk for chunk in chunker(rain_15Min)]
chunk_lens = [len(chunk) for chunk in chunks]

最新更新