使用布尔数组B的Numpy切片数组A

时间:2019-10-28 18:39:05

标签: python numpy conditional-statements

我有以下示例收入和成本数组:

收入:

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.wherenp.take的位置,但是无法得到我想要的东西。

3 个答案:

答案 0 :(得分:1)

相乘而不是索引。 False代表0,True代表1。

答案 1 :(得分:1)

使用 np.where 来利用索引

revenue[np.where(condition!=True)] = 0
cost[np.where(condition!=True)] = 0

答案 2 :(得分:0)

创建零数组并使用布尔条件分配给它。

例如:

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