我正在研究一个大型基因阵列,其中单个基因由多个探针表示,从2个到20个探针。我基本上想做一个kruskal-wallace测试(非参数方差分析),以确定单个基因上的探针是否提供了本质上相同的信息。所以我写了下面的代码,让基因是一个(1xm)数组,其中m是探针的数量。设X是(n×m)个数组)。
ugenes=np.unique(genes)
for i in range(genes.size):
gene=ugenes[i]
idx=np.where(genes==gene)[0]
% the length of idx is variable and can be anywhere from 2 to twenty so Xd is of
% variable size
Xd=X[:,idx]
[h,p]=kruskal(Xd)我遇到的问题是kruskal只接受一维数组和多个数组作为参数。由于Xd是可变的,我不知道我必须将它分解成多少个单独的数组,并且独特基因的数量约为20000,所以手动操作是不可行的。有没有办法分解Xd,这样它就可以发送到kruskal,作为
kruskal(Xd[:,0],Xd[:,1],...Xd[:,z])(其中z是Xd的总列数),而不计算Xd的列数?
发布于 2020-05-29 05:20:30
您可以尝试将列转换为list并将其传递给kruskal:
Xd=list(X[:,idx].T)
[h,p]=kruskal(*Xd)https://stackoverflow.com/questions/62073888
复制相似问题