代码之家  ›  专栏  ›  技术社区  ›  Grumpy Civet

Python-从np.array中选择复杂的列子集

  •  1
  • Grumpy Civet  · 技术社区  · 4 周前

    我想要一个数组X,并且我想要选择,例如,第一列、第五列、第七列和最后1000列的所有列(不重叠)。我知道我可以使用 X[:, [0,4,6]] 最后1000列 X[:, -1000:] 。但是有没有一种快速简单的方法可以使用一条线/对象将它们全部选择在一起?

    2 回复  |  直到 4 周前
        1
  •  1
  •   mozway    4 周前

    您可以使用 np.r_ :

    X[:, np.r_[[0,4,6],-1000:0]]
    

    (5,20)数组选择0,4,6和最后10的示例:

    X = np.arange(100).reshape(-1, 20)
    X[:, np.r_[[0,4,6],-10:0]]
    
    # array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9],
    #        [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
    #        [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
    #        [60, 61, 62, 63, 64, 65, 66, 67, 68, 69]])
    

    中间的

    np.r_[[0,4,6],-10:0]
    # array([  0,   4,   6, -10,  -9,  -8,  -7,  -6,  -5,  -4,  -3,  -2,  -1])
    

    请注意,应确保切片不重叠,否则会有重复的列。

        2
  •  1
  •   Mohamed Hammou    4 周前
    X : list = [x for x in range(1,2001)]
    elements : list = [X[i] for i in [0,4,6]] + X[1000:]