代码之家  ›  专栏  ›  技术社区  ›  codingknob

使用布尔数组B对数组A进行Numpy切片

  •  0
  • codingknob  · 技术社区  · 5 年前

    我有以下收入和成本阵列示例:

    np.array([[[0,1, 1],
    [-1, 0, 1],
    [-1, -1, 0]],
    
    [[0,0, 1],
    [0, 0, 1],
    [-1, -1, 0]]])
    

    费用:

    np.array([[[0,0.5, 0.4],
    [-0.5, 0, 3],
    [-0.4, -3, 0]],
    
    [[0,0, 0.3],
    [0, 0, 0.3],
    [-0.3, -0.3, 0]]])
    

    np.array([[[False, True, True],
            [False, False, True],
            [False, False, False]],
    
           [[False, False, False],
            [False, False,  True],
            [False, False, False]]])
    

    我需要收入[条件]和成本[条件],或者更确切地说,希望按条件数组对收入/成本数组进行切片/筛选。但我希望这样:

    收入[条件]:

    np.array([[[0,1, 1],
    [0, 0, 1],
    [0, 0, 0]],
    
    [[0,0, 0],
    [0, 0, 1],
    [0, 0, 0]]])
    

    成本[条件]:

    np.array([[[0,0.5, 0.4],
    [0, 0, 3],
    [0, 0, 0]],
    
    [[0,0, 0.3],
    [0, 0, 0.3],
    [0, 0, 0]]])
    

    np.where np.take 但没能得到我想要的。

    0 回复  |  直到 5 年前
        1
  •  1
  •   Koen G.    5 年前

    乘法而不是索引。False作为0,True作为1。

        2
  •  1
  •   Martin    5 年前

    使用 np.其中 利用索引

    revenue[np.where(condition!=True)] = 0
    cost[np.where(condition!=True)] = 0
    
        3
  •  0
  •   Lior Cohen    5 年前

    例如:

    zero_cost = np.zeros_like(cost)
    zero_cost[condition] = cost[condition]