计算numpy数组的条件中位数

2024-04-19 12:53:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个形式为X的numpy数组

[ 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)每个实验进行了多少次重复

我怀疑这应该可以通过某种掩蔽来实现,例如,像中位数(X[:,2],这样X[:,0]=a),以某种方式在a上迭代,但我不确定这样做的语法


1条回答
网友
1楼 · 发布于 2024-04-19 12:53:01
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)

相关问题 更多 >