【问题标题】:add numpy subarray to numpy array based on condition根据条件将 numpy 子数组添加到 numpy 数组
【发布时间】:2021-01-24 07:27:02
【问题描述】:

我有一个 2d numpy 数组和一个 2d numpy 子数组,我想根据条件将它们添加到原始数组中。 我知道你可以像这样将二维子数组添加到数组中:

original_array[start_x:end_x, start_y:end_y] = sub_array 

但我不知道如何有效地仅添加大于 0 的 sub_array 的值?

例子:

orginal_array = np.array([2,2],[2,2],[2,2],[2,2])
sub_array = np.array([0,0],[1,1],[0,1],[0,0])
expected_result = np.array([2,2], [1,1], [2,1], [2,2])

【问题讨论】:

  • 请用 1) 数组示例、2) 子数组示例和 3) 预期输出示例更新问题。干杯。

标签: python arrays numpy conditional-statements


【解决方案1】:

另一种方法是将np.where 函数用作:

np.where(sub_array > 0, sub_array, original_array)

输出:

array([[2, 2], 
       [1, 1], 
       [2, 1], 
       [2, 2]])

【讨论】:

    【解决方案2】:

    您可以根据条件>,< 0进行索引并添加数组。

    orginal_array * (sub_array <= 0) + sub_array * (sub_array > 0)
    
    array([[2, 2],
           [1, 1],
           [2, 1],
           [2, 2]])
    

    【讨论】:

      【解决方案3】:

      试试,

      sub_array2 = np.select([sub_array>0],[sub_array])
      original_array[start_x:end_x, start_y:end_y] = sub_array2 
      

      【讨论】:

      • 不幸的是,它没有按预期工作。如果子数组中的值是 0 或小于 0,我希望原始数组中的值保持不变。看看我更新的问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2021-08-28
      • 2019-11-07
      • 1970-01-01
      • 2011-04-22
      • 2011-02-10
      相关资源
      最近更新 更多