【问题标题】:Perform operation in NumPy array except for some values除某些值外,在 NumPy 数组中执行操作
【发布时间】:2020-06-02 15:43:46
【问题描述】:

有没有一种简单的方法来锁定/冻结 Numpy 数组中的元素。我想在 python 中对 Numpy 数组进行一些操作,同时保持一些特定的值原样。

例如,

如果 a 有一个 Numpy 数组 a ;

[[ 1  3  4  5],
  [6  7  8  0],
  [9 10  11 2]]

和另一个 Numpy 数组 b ;

[[2  0  4  10],
 [11 5  12  3],
 [6  8  7   9]]

和 c = a+b 但保留 a 中的原始值 3、8 和 2。

我的数组非常大,我想要一个解决方案,我不必使用 for 循环、if 语句或类似的东西。

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    您可以使用np.isin 构建掩码,然后根据结果从aa+b 填充np.where

    m = np.isin(a, [3,8,2])
    c = np.where(m, a, a+b)
    

    或者正如@hpaulj 建议的那样,您也可以在np.add 中使用whereout,这将就地修改a

    np.add(a, b, where=~np.isin(a,[3,8,2]), out=a)
    
    array([[ 3,  3,  8, 15],
           [17, 12,  8,  3],
           [15, 18, 18,  2]])
    

    【讨论】:

    • 你也可以使用np.addwhere(和out)。
    • 不错的建议@hpaulj :) 将其添加到答案中
    猜你喜欢
    • 2017-06-14
    • 1970-01-01
    • 2010-12-20
    • 2021-06-03
    • 2020-04-02
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多