【问题标题】:Generate pair wise column combination from np.array从 np.array 生成成对列组合
【发布时间】:2018-09-13 22:00:24
【问题描述】:

我有一个大小为 500 x 15 的 np.array。如何生成一个新的 np 数组,其中包含该数组中 2 列的所有可能的成对组合?

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

我想要输出这样它生成的组合

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

我找不到选择输出中所有列值的方法。对于具有 15 列的数组,应该有 N*(N-1) 即 15 * 14 = 210 对。

【问题讨论】:

    标签: python numpy data-science


    【解决方案1】:

    您可以使用 itertools 中的combinations 来选择所有唯一的列对。

    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]]])
    

    【讨论】:

    • 谢谢@Alexander。我写了代码,但它生成的是行组合而不是列组合。
    • 后续问题,如何跟踪每个组合的列数?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    相关资源
    最近更新 更多