计算 numpy 数组的条件中位数

Calculating conditional medians of a numpy array

我有一个形式为

的 numpy 数组 X
[ A 1 a1 ]
[ A 2 a2 ]
[ A 3 a3 ]
[ B 1 b1 ]
[ B 2 b2 ]
[ B 3 b3 ]
[ B 4 b4 ]
[ C 1 c1 ]
[ C 2 c2 ]
[ C 3 c3 ]
[ C 4 c4 ]
[ C 5 c5 ]

其中

我需要缩减此数组以包含每个实验设置所发生情况的摘要,例如输出数组

[ A median(a1, a2, a3) ]
[ B median(b1, b2, b3, b4) ]
[ C median(c1, c2, c3, c4, c5) ]

我想这样做而无需表明

i) 有多少种不同的实验设置,

ii) 每个实验重复了多少次。

我怀疑这应该可以通过某种掩蔽来实现,例如类似于 median(X[:,2] such that X[:,0] = a),以某种方式迭代 a,但我不确定这样做的语法。

import numpy as np

experiments = np.unique(X[:,0])
medians = []
for experiment in experiments:
    l = [experiment]
    l.append(np.median(X[X[:,0]==experiment, 2]))
    medians.append(l)
medians = np.array(medians)