Вы можете использовать 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]]])