вычесть стандартное отклонение от максимального значения

#numpy

#numpy

Вопрос:

У меня есть массив a (форма (5,4))

 [[ 8  9 10 11]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]
 [ 8  9 10 11]]
 

Я хочу вычесть стандартное отклонение от максимального значения (15), чтобы конечный результат был

 [[ 8  9 10 11]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 12.23413666]
 [ 8  9 10 11]]
 

Как я могу это сделать?

Комментарии:

1. Что вы пробовали до сих пор? Покажите нам, где вы застряли.

Ответ №1:

Это должно сработать:

 import numpy as np
a = np.array([[ 8.,  9., 10., 11.,], [ 4.,  5.,  6.,  7.], [ 8.,  9., 10., 11.], [12., 13., 14., 15.], [ 8.,  9., 10., 11.]])
max_index = np.unravel_index(a.argmax(), a.shape)
a[max_index] -= a.std()
print(a)
 

Для max_index вы должны использовать функцию unrave_index, потому что argmax numpy возвращает индекс из сплющенного массива. После этого вы просто вычитаете стандартное отклонение из значения в max_index .

Ответ №2:

 import numpy as np

a = np.array([[ 8,  9, 10, 11],
 [ 4,  5,  6,  7],
 [ 8,  9, 10, 11],
 [12, 13, 14, 15],
 [ 8,  9, 10, 11]], dtype=float)

# get indices of maximum values
indices = np.where(a == a.max())

# subtract std from values
a[indices] -= a.std()

print(a)