相当于if/elif/else的Numpy等价物,如果条件不是m,则保留最后一个值

2024-09-30 10:35:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码,其中变量“close”、“closeLow”和“closeHigh”是相同大小的numy 1D数组。在

我想计算数组“showData”,如下面的代码所示,使用的函数为np.哪里或任何其他矢量化/有效的方式。在

showData = np.full(len(close), True)
for i in range(len(close)):
    if close[i] < closeLow[i]:
        showData[i] = True
    elif close[i] > closeHigh[i]:
        showData[i] = False
    else:
        showData[i] = showData[i-1]

这里的问题是我找不到任何简单的方法来重现最后一行的效果,如果两个条件(ifelif)不满足,我们就保留最后一次迭代的结果。在

提前谢谢!在


Tags: 函数代码truecloselenifnp方式
1条回答
网友
1楼 · 发布于 2024-09-30 10:35:58

使用np.selectpd.Series.ffill转发填充数据。在

showdata = pd.Series(np.select(
        [close < closeLow, close > closeHigh], [1., 0.], default=np.nan)
    ).ffill().astype(bool)

在满足条件的情况下指定1或0,否则指定NaN。ffill然后向前用最后一个非空值填充nan。在

数组/序列开头的nan不能用这种方式填充。在

相关问题 更多 >

    热门问题