Python 从数据帧中查找频率并在数组中存储值
我试图编写一个python代码,以获得零值之间连续出现非零值的次数。要计算频率并存储一次出现的非零数字,数组中的零和零之间非常简单。但当我试图为连续出现超过6次的非零代码编写代码时,问题就出现了,即代码开始变得太长。 这是我试过的Python 从数据帧中查找频率并在数组中存储值,python,Python,我试图编写一个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 du
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]
你读过吗?np。其中(rain_15Min[:]==0)
会给你0分,然后你可以从那里推理