【发布时间】:2019-02-20 06:52:08
【问题描述】:
以下python代码
df['tag'] = df['Value'] < 1.0
df['mask'] = np.where(df['tag'],1,0)
first = df.index[df['tag'] & ~ df['tag'].shift(1).fillna(False)]
last = df.index[df['tag'] & ~ df['tag'].shift(-1).fillna(False)]
pr = [(i, j) for i, j in zip(first, last) if j > i + 1]
返回一个数组 pr,其中包含小于值 1 的连续行的元组。我尝试将这个 Julia 翻译成部分范围,如下所示:
df[:tag]=df[:Value] .< 1.0
df[:mask]=zeros(length(df[:tag]))
df[:mask][df[:tag].==true] .= 1
df[:mask][df[:tag].==false] .= 0
如何在 Julia 中复制 first、last、pr 的值?
【问题讨论】:
-
我实施了没有
j > i + 1条件的解决方案,因为我不清楚为什么需要它。 -
没有这个条件,一些块的长度为零。我想要大小大于零的块。
-
但
j > i + 1意味着j必须至少为i+2,这意味着块长度至少为3。假设您有一个输入向量[0.5, 0.5]。在此条件下,pr是[]。这是你想要的吗?我以为你想在这种情况下获得[(0,1)](在 Python 中),或者等效地在 Julia 中获得[(1,2)]。