Я работаю над большим массивом генов, где один ген представлен несколькими зондами, от 2 до 20. Я в основном хочу провести тест Краскала-Уоллеса (непараметрический c anova), чтобы определить, зонды одного гена дают практически одинаковую информацию. Итак, я написал следующий код, пусть гены будут массивом (1 xm), где m - количество зондов. Пусть X будет (nxm) numpy массивом).
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(Xd[:,0],Xd[:,1],...Xd[:,z])
(где z - общее количество столбцов Xd) на лету, не выполняя количество столбцов Xd?