代码之家  ›  专栏  ›  技术社区  ›  linkey apiacess

numpy函数类似于pandas更新吗?

  •  0
  • linkey apiacess  · 技术社区  · 2 年前

    是否可以在中执行矩阵更新 numpy 类似于pandas如何更新数据帧。

    In pandas 如果我有两个数据帧,我可以过滤其中一个以获取更新值,然后用 update() 功能。

        df = pd.DataFrame({'A': [1, 2, 3],
                       'B': [400, 500, 600]})
        new_df = pd.DataFrame({'B': [4, 5, 6]})
    
        df.update(new_df[new_df["B"] > 4])
    

    我不知道如果 numpy 具有类似的功能。目前,我必须遍历每个元素的数组。

        narr = np.random.rand(10)
        new_narr = np.random.rand(10)
        for i, c in enumerate(new_narr > narr):
             if c:
                 narr[i] = new_narr[i]
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Tim Roberts    2 年前

    您可以使用花哨的索引在第二个剪辑中执行该操作:

    import numpy as np
    narr = np.random.rand(10)
    new_narr = np.random.rand(10)
    print(narr)
    print(new_narr)
    narr[new_narr > narr] = new_narr[new_narr > narr]
    print(narr)
    

    我打印了照片,这样你就可以看到它生效了。输出:

    [0.101018   0.92010774 0.0168271  0.25279981 0.37062389 0.58470343
     0.41127726 0.47887049 0.63323112 0.48178234]
    [0.17995055 0.39193739 0.7586071  0.72915965 0.48462354 0.63462616
     0.02083988 0.19413093 0.37365804 0.73229754]
    [0.17995055 0.92010774 0.7586071  0.72915965 0.48462354 0.63462616
     0.41127726 0.47887049 0.63323112 0.73229754]
    

    当然,这个特定的例子最好用 np.max ,但让我们假设这是更复杂的事情的一部分。