Numpy массивы;Как заменить элементы другим массивом в зависимости от условий? - PullRequest
0 голосов
/ 26 сентября 2019

С учетом двух числовых массивов:

import numpy as np 
A = np.array([[0, 5, 0],
             [1, 0, 1],
             [0, 2, 0]])

B = np.array([[0, 7, 0],
             [1, 0, 1],
             [0, 1, 0]])

Как заменить элементы в A, где тот же индекс i, j больше в B.

Я бы подумал, что это:

A[A < B] = B

Будет работать, но это не так.

Ожидаемый результат:

[[0, 7, 0],
 [1, 0, 1],
 [0, 2, 0]]

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

A[A < B] имеет совершенно другую форму, чем B, поэтому вы не можете выполнить это назначение.Вы хотели сделать

A[A < B] = B[A < B]

Чуть эффективнее, вы могли бы сказать

mask = A < B
A[mask] = B[mask]

Или вы могли бы просто оценить максимум для каждого элемента:

A = np.maximum(A, B)
1 голос
/ 26 сентября 2019

Простое решение путем задания B для получения массива аналогичного размера и последующего задания по его результатам:

A[A < B] = B[B > A]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...