计算 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,B,C)对应不同的实验设置,
- (1, 2, 3, ...) 对应实验的独立重复,
- (a1、b2 等)对应于每次复制时所做的测量
我需要缩减此数组以包含每个实验设置所发生情况的摘要,例如输出数组
[ 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)
我有一个形式为
的 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,B,C)对应不同的实验设置,
- (1, 2, 3, ...) 对应实验的独立重复,
- (a1、b2 等)对应于每次复制时所做的测量
我需要缩减此数组以包含每个实验设置所发生情况的摘要,例如输出数组
[ 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)