Я бы хотел посчитать срединную строку за строкой в кадре данных, содержащем более 500 000 строк.На данный момент я использую np.median
, потому что numpy оптимизирован для работы на одном ядре.Это все еще очень медленно, и я хотел бы найти способ параллельного вычисления
В частности, у меня есть N
таблицы размера 13 x 500,000
, и для каждой таблицы я хочу добавить столбцы Q1, Q3 имедиана, так что для каждого ряда медианный столбец содержит медиану ряда.Поэтому я должен вычислить N * 500,000
медианные значения.
Я пытался с numexpr
, но это не представляется возможным.
РЕДАКТИРОВАТЬ: На самом деле мне также нужноQ1 и Q3, поэтому я не могу использовать модуль статистики, который не позволяет рассчитывать квартили.Вот как я вычисляю медиану для момента
q = np.transpose(np.percentile(data[row_array], [25,50,75], axis = 1))
data['Q1_' + family] = q[:,0]
data['MEDIAN_' + family] = q[:,1]
data['Q3_' + family] = q[:,2]
РЕДАКТИРОВАТЬ 2 Я решил свою проблему, используя алгоритм медианы медианы, как предложено ниже