#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)