【发布时间】:2019-10-25 09:43:40
【问题描述】:
我有一个使用循环开发的数据集(代码如下)。
## A subset of the data
deficit = (E_daily[:,160,100] - P_daily[:,160,100]) # A view of `deficit` is given below
deficit_cum = np.zeros([365])
start = 0
stop = 0
for i in range(365):
deficit_cum[i] = deficit[i] + deficit_cum[i-1]
if deficit_cum[i] >= 0:
if np.nanmax(deficit_cum) <= deficit_cum[i]:
stop = i
else:
continue
else:
deficit_cum[i] = 0
if np.nanmax(deficit_cum) > deficit_cum[i]:
continue
else:
start = i #Start is not defined correctly by me
现在我也对循环开始和结束的值的索引感兴趣。我知道这很令人困惑,这是一个示例(下面是 deficit_cum 的外观):
上图中,从代码中,绿线定义start(x轴),红线定义stop(x轴)。所以基本上我希望最大值是我的stop 点。但我希望我的start 小于停止,start 和stop 之间不应该有任何负面影响。 所以对于下图,我的 start 应该在 111 左右,stop 应该在 236 左右。
我想我知道如何获得stop(上面的代码),但我仍然无法定义start。
[补充信息:我的start应该是全局最大值前最后一个零的索引,stop应该是全局最大值的索引]
【问题讨论】:
-
你想要什么?你想总是
start小于stop? -
你使用的是 pandas 还是简单的 numpy?
-
@Mohsen_Fatemi。是的,我希望
start成为循环实际开始累积值的点(绿线)。所以它应该总是小于stop。所以基本上start应该是绿线和红线之间的第一个零,并且在那个零或另一个零之后应该没有负值。 -
@FlorianBernard。我正在使用 numpy。
-
@Ep1c1aN 看看我的回答
标签: python arrays loops if-statement