Numpy Массив заменяет самые большие и самые маленькие значения - PullRequest
0 голосов
/ 06 января 2020

Учитывая следующий массив (в действительности я буду использовать гораздо больший):

ar = np.random.randn(2,10)
ar.sort()
array([[-2.08265194, -1.54667461, -0.42901332,  0.00365949,  0.60151581,
         0.69619798,  0.69741627,  0.97086132,  1.79259285,  3.2797454 ],
       [-2.06961226, -1.25542722, -0.44750088, -0.27424209, -0.22824756,
         0.4234969 ,  0.61014409,  0.93816367,  1.11788673,  1.74181219]])

Для каждого элемента я бы хотел:

  1. заменить наименьший значение со следующим абсолютным значением минус само время умножить на 10.
  2. заменить наибольшее значение следующим абсолютным значением плюс само время умножить на 10.

Пример (наименьшее значение, первый элемент): заменить -2,08265194 с -1,54667461 - (1,54667461 * 10) = -17,01342072

Желаемый результат:

array([[-17.01342072, -1.54667461, -0.42901332,  0.00365949,  0.60151581,
         0.69619798,  0.69741627,  0.97086132,  1.79259285,  19.718521349999996 ],
       [-13.80969942, -1.25542722, -0.44750088, -0.27424209, -0.22824756,
         0.4234969 ,  0.61014409,  0.93816367,  1.11788673,  12.29675403]])

1 Ответ

0 голосов
/ 06 января 2020

Кажется, что на самом деле работают. Я буду использовать их, если нет более быстрого способа сделать это (я настраиваю симуляцию с 1 миллионом итераций, поэтому скорость является ключевой).

outliers = 1
ar[:,0:outliers] = ar[:,outliers:outliers+1] - np.abs(ar[:,outliers:outliers+1])*10
ar[:,-outliers:] = ar[:,-outliers - 1:-outliers] + np.abs(ar[:,-outliers - 1:-outliers])*10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...