2015-11-16 3 views
0

У меня есть следующий NumPy массивКак найти различные комбинации массива numpy?

[[0 6 0 0] 
[0 7 0 0] 
[0 1 0 0] 
[0 7 0 0] 
[3 4 6 0] 
[2 1 4 0] 
[3 1 2 0] 
[3 1 2 0] 
[0 1 2 0] 
[1 7 1 3] 
[0 3 6 7]] 

Я хочу, чтобы получить комбинации, как:

1.[0 0 0 0 0 3 2 3 3 0 1 0] 
    2.[6 6 7 1 7 4 1 1 1 1 7 3] 
    3.[0 0 0 0 0 6 4 2 2 2 1 6] 
    4.[0 0 0 0 0 0 0 0 0 0 3 7] 
    5.[[0 6] 
    [0 7] 
    [0 1] 
    [0 7] 
    [3 4] 
    [2 1] 
    [3 1] 
    [3 1] 
    [0 1] 
    [1 7] 
    [0 3]] 

и так далее ..

Как мы можем сделать это в цикле?

+0

Почему вы хотите петлю абсолютно? – Julien

+0

Есть ли другой способ выполнить это? – Aparna

+0

, используя понимание списка (это своего рода цикл), но, прежде всего, с помощью itertools, см. Ответ ниже. – Julien

ответ

0
import numpy as np 
from itertools import combinations 

t = np.random.rand(4,3) # dummy example np.array 
n_cols = t.shape[1] # number of columns 

# all the combinations in a tuple: 
combs = tuple(t[:, comb] for n in range(n_cols+1) for comb in combinations(range(n_cols), n)) 

Это становится все комбинации столбцов длины n для всех (разумных) значений n.

+0

Большое вам спасибо! – Aparna

+0

Добро пожаловать! Если это полностью решит ваш вопрос, отметьте ответ как принятый, иначе сообщите нам, что вы все еще не получили. – Julien