Многомерный numpy массив в переменное количество из нескольких одномерных массивов для аргумента функции scipy - PullRequest
1 голос
/ 28 мая 2020

Я работаю над большим массивом генов, где один ген представлен несколькими зондами, от 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?

1 Ответ

1 голос
/ 29 мая 2020

Вы можете попробовать преобразовать столбцы в список и передать его в kruskal:

Xd=list(X[:,idx].T)
[h,p]=kruskal(*Xd)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...