【问题标题】:I need to vectorize this operation in python我需要在 python 中对这个操作进行矢量化
【发布时间】:2019-12-30 13:28:53
【问题描述】:

我有一个包含 0,1,2,3 个数字的数组 像那样 [1,0,0,0,3,0,0,0,2,0,0,0,0...] 我需要用零之前的数字替换所有“0”。 我需要这个。 [1,1,1,1,3,3,3,3,2,2,2,2,2,...] 我可以使用矢量化而不使用循环来做到这一点吗? 我的列表太大了,这是代码中最耗时的部分 在此先感谢

或者,您可以提供更好的循环方式 我现在正在这样做

for i, row in df.iterrows():
if df["poz"][i]==0:
    df["poz"][i]=df["poz"][i-1]

【问题讨论】:

    标签: python-3.x numpy loops vectorization


    【解决方案1】:

    将0替换为nan后可以使用pandas ffill方法:

    import numpy as np
    import pandas as pd
    s = pd.Series([1,0,0,0,3,0,0,0,2,0,0,0,0] )
    s.replace(0, np.nan).ffill()
    

    结果:

    0     1.0
    1     1.0
    2     1.0
    3     1.0
    4     3.0
    5     3.0
    6     3.0
    7     3.0
    8     2.0
    9     2.0
    10    2.0
    11    2.0
    12    2.0
    dtype: float64
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多