Массив срезов N с использованием логического массива B - PullRequest
0 голосов
/ 28 октября 2019

У меня есть следующие примеры массивов доходов и расходов:

доход:

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 но не смогли получить то, что я хочу.

Ответы [ 3 ]

1 голос
/ 28 октября 2019

Используйте np.where , который использует индексы

revenue[np.where(condition!=True)] = 0
cost[np.where(condition!=True)] = 0
1 голос
/ 28 октября 2019

Умножить вместо индексации. Ложь действует как 0 и Истина как 1.

0 голосов
/ 28 октября 2019

Создайте массив нулей и присвойте ему логическое условие.

Например:

zero_cost = np.zeros_like(cost)
zero_cost[condition] = cost[condition]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...