Получить максимальное значение каждого индекса между несколькими массивами numpy - PullRequest
1 голос
/ 09 марта 2020

Итак, у меня есть три NumPy массива, все с 300 элементами в них. Можно ли как-нибудь создать новый массив с наибольшим значением для каждого индекса? Я не уверен, с чего начать, так как я не сравниваю числа в одном списке. Я знаю, что есть какой-то тип l oop, где вы начинаете с 0 до длины, и вам нужно инициализировать пустой массив для заполнения, но я не уверен, как бы вы сравнили значения для каждого индекса. Скорее всего, я слишком много думаю

Ex.
a = [16,24,52]
b = [22,15,136]
c = [9,2,142]
Output = [22,24,142]

Ответы [ 3 ]

1 голос
/ 09 марта 2020

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

np.amax(np.array([a,b,c]), axis=0)

Выход:

array([ 22,  24, 142])
1 голос
/ 09 марта 2020

Если вы хотите следовать своей первоначальной идее, включающей al oop и инициализацию массива, вы можете использовать np.zeros() с последующими range() и max():

import numpy as np

a = np.array([16, 24, 52])
b = np.array([22, 15, 136])
c = np.array([9, 2, 142])

# initialize array filled with zeros
Output = np.zeros(len(a), dtype=int)

# populate array
for i in range(len(a)):
    Output[i] = max(a[i], b[i], c[i])

print(Output)

Вывод:

[ 22  24 142]
1 голос
/ 09 марта 2020

Поскольку все ваши массивы имеют одинаковую длину, вы можете сложить их вертикально, используя np.vstack. Затем используйте np.max на axis=0:

import numpy as np

a = np.array([16, 24, 52])
b = np.array([22, 15, 136])
c = np.array([9, 2, 142])

out = np.max(np.vstack((a, b, c)), axis=0)
print(out)

Вывод:

[ 22  24 142]

Надеюсь, это поможет!

----------------------------------------
System information
----------------------------------------
Platform:    Windows-10-10.0.16299-SP0
Python:      3.8.1
NumPy:       1.18.1
----------------------------------------
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...