вы пробовали sorted(u, key=average)
? это будет рассчитывать среднее значение каждого столбца только один раз.
если размер массива всегда делится на 19 без остатка:
>>> import numpy as np
>>> n = 2
>>> u = np.array([v for v in range(19*n)])
>>> u = u.reshape(n,19)
>>> sorted(c, key=np.average)
[array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]),
array([19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37])]