Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 与if/elif/else等效的Numpy,在不满足条件时保留最后一个值_Python_Pandas_Loops_Numpy_Vectorization - Fatal编程技术网

Python 与if/elif/else等效的Numpy,在不满足条件时保留最后一个值

Python 与if/elif/else等效的Numpy,在不满足条件时保留最后一个值,python,pandas,loops,numpy,vectorization,Python,Pandas,Loops,Numpy,Vectorization,我有以下代码,其中变量“close”、“closeLow”和“closeHigh”是大小相同的numpy1d数组 我想计算数组“showData”,如下面的代码所示,使用一些函数作为“np.where”或任何其他矢量化/有效的方法 showData = np.full(len(close), True) for i in range(len(close)): if close[i] < closeLow[i]: showData[i] = True elif

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

我想计算数组“showData”,如下面的代码所示,使用一些函数作为“np.where”或任何其他矢量化/有效的方法

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]
showData=np.full(len(close),True)
对于范围内的i(len(close)):
如果关闭[i]closeHigh[i]:
showData[i]=False
其他:
showData[i]=showData[i-1]
这里的问题是,我找不到任何简单的方法来重现最后一行的效果,如果两个条件(if和elif)不满足,我们将保留最后一次迭代的结果


提前谢谢

使用
np。选择
pd.Series.ffill
转发填充数据

showdata = pd.Series(np.select(
        [close < closeLow, close > closeHigh], [1., 0.], default=np.nan)
    ).ffill().astype(bool)
showdata=pd.系列(np.select(
[closecloseHigh],[1,0.],默认值=np.nan)
).ffill().astype(bool)
如果相应地满足条件,则通过指定1或0来工作,否则为NaN
ffill
然后仅向前使用最后一个非空值填充NAN

数组/序列开头的NAN不能以这种方式填充