Создайте парную комбинацию столбцов из np.array - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть массив np.ar размером 500 x 15. Как я могу сгенерировать новый массив np со всей возможной парной комбинацией из 2 столбцов из этого массива?

arr = [[col1], [col2], [col3], ..., [col14]]

Я хочу вывод такой, чтобы он генерировал комбинацию как

 [[col1],[col2]]
 [[col1],[col3]]
 .
 .
 [[col13],[col14]]

Я не могу найти способ выбрать все значения столбцов в выводе. Для массива, содержащего 15 столбцов, должно быть N * (N-1), то есть 15 * 14 = 210 пар.

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете использовать combinations из itertools, чтобы выбрать все уникальные пары столбцов.

from itertools import combinations

np.random.seed(0)

arr = np.array(np.random.randn(2, 3))
>>> arr
array([[ 1.76405235,  0.40015721,  0.97873798],
       [ 2.2408932 ,  1.86755799, -0.97727788]])

>>> np.array([arr[:, [i, j]] for i, j in combinations(range(arr.shape[1]), 2)])
array([[[ 1.76405235,  0.40015721],  # First and second column.
        [ 2.2408932 ,  1.86755799]],

       [[ 1.76405235,  0.97873798],  # First and third column.
        [ 2.2408932 , -0.97727788]],

       [[ 0.40015721,  0.97873798],  # Second and third column.
        [ 1.86755799, -0.97727788]]])
...