Как рассчитать матрицу для каждой строки в numpy / scipy? - PullRequest
0 голосов
/ 15 декабря 2018

Мне нужно что-то вроде троичного оператора, но по строке в матрице.

У меня есть элементы ai / bi / ci, ad, bd, cd, и мне нужно вычислить aj / bj / cj:

 ai   bi   ci |  ad   bd   cd |  aj   bj   cj 
--------------+---------------+--------------
1.1  1.2  1.3 | 0.1  0.6  0.3 | 1.1  2.4  1.3
                     ^^^             ^^^   
1.5  1.6  1.7 | 0.6  0.7  0.8 | 1.5  1.6  3.1
                          ^^^             ^^^

Логика такова:

aj = ai if ad < max(ad, bd, cd) else bi + ci

, если ai является максимальным среди *i, то aj = bi + ci.То же самое относится к bj и cj, они заменяются суммой двух других элементов.

Я могу написать троичный оператор в пандах, но надеюсь, что есть способ выразить это в numy.

1 Ответ

0 голосов
/ 15 декабря 2018

Использование np.where и разбиение массива :

A = np.array([[1.1, 1.2, 1.3, 0.1, 0.6, 0.3],
              [1.5, 1.6, 1.7, 0.6, 0.7, 0.8]])

n = A.shape[1] // 2

res = np.where(A[:, n:] < A[:, n:].max(1)[:, None],
               A[:, :n],
               A[:, :n].sum(1)[:, None] - A[:, :n])

print(res)

array([[1.1, 2.4, 1.3],
       [1.5, 1.6, 3.1]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...