Я пытаюсь объединить два numpy 2D-массива в один массив на основе определенных критериев, например

# array1
[1,2,3,4,5]
[10,11,12,13,14]

# array2
[15,16,17,18,19]
[6,7,8,9,10] 

Результирующая комбинация массива 1 и массива 2 на основе критерия - наивысшего значения - будет выглядеть, как показано ниже;

[15,16,17,18,19]
[10,11,12,13,14]

Я знаю, как объединить два массива вместе, фильтровать, но я не могу найти функцию, которая предоставила бы мне вышеуказанный результат.

Возможно, вариант np.where?

1
Firmino2019 5 Май 2021 в 01:24

2 ответа

Лучший ответ

С помощью numpy.where для массивов {{X1 }} и b можно использовать:

np.where(a>b, a, b)

Для вашего примера:

>>> import numpy as np
>>> a = np.array([[1,2,3,4,5],[10,11,12,13,14]])
>>> b = np.array([[15,16,17,18,19],[6,7,8,9,10]])
>>> np.where(a>b, a, b)
array([[15, 16, 17, 18, 19],
       [10, 11, 12, 13, 14]])
1
GoodDeeds 4 Май 2021 в 22:29

Вы можете использовать numpy.maximum:

import numpy as np

a1 = np.array([[1,2,3,4,5],[10,11,12,13,14]])
a2 = np.array([[15,16,17,18,19],[10,11,12,13,14]])

print(np.maximum(a1, a2))
# [[15 16 17 18 19]
#  [10 11 12 13 14]]
0
iz_ 4 Май 2021 в 22:27