Как @damagedcoda говорит, что ваша основная ошибка в том, что вы должны использовать вместо значения index индекс, но у вас возникнут новые проблемы, если вы будете пересчитывать lower_anomaly_point и upper_anomaly_point внутри цикла.Поэтому я рекомендую вам попробовать np.where для решения вашей задачи:
import numpy as np
data_array = np.array([
99.5697438 , 94.47019021, 55., 106.86672855,
102.78730151, 131.85777845, 88.25376895, 96.94439838,
83.67782174, 115.57993209, 118.97651966, 94.40479467,
79.63342207, 77.88602065, 96.59145004, 99.50145353,
97.25980235, 87.72010069, 101.30597215, 87.3110369 ,
110.0687946 , 104.71504012, 89.34719772, 160.,
110.61519268, 112.94716398, 104.41867586])
mean = np.mean(data_array, axis=0)
sd = np.std(data_array, axis=0)
lower_anomaly_point = mean - (3 * sd)
upper_anomaly_point = mean + (3 * sd)
data_array = data_array[
np.where(
(upper_anomaly_point > data_array) & (data_array > lower_anomaly_point)
)]
и результат:
array([ 99.5697438 , 94.47019021, 55. , 106.86672855,
102.78730151, 131.85777845, 88.25376895, 96.94439838,
83.67782174, 115.57993209, 118.97651966, 94.40479467,
79.63342207, 77.88602065, 96.59145004, 99.50145353,
97.25980235, 87.72010069, 101.30597215, 87.3110369 ,
110.0687946 , 104.71504012, 89.34719772, 110.61519268,
112.94716398, 104.41867586])