How do you extract a column from a multi-dimensional array?

前端 未结 20 2835
感情败类
感情败类 2020-12-02 03:56

Does anybody know how to extract a column from a multi-dimensional array in Python?

相关标签:
20条回答
  • 2020-12-02 04:32

    I prefer the next hint: having the matrix named matrix_a and use column_number, for example:

    import numpy as np
    matrix_a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
    column_number=2
    
    # you can get the row from transposed matrix - it will be a column:
    col=matrix_a.transpose()[column_number]
    
    0 讨论(0)
  • 2020-12-02 04:34

    Despite using zip(*iterable) to transpose a nested list, you can also use the following if the nested lists vary in length:

    map(None, *[(1,2,3,), (4,5,), (6,)])
    

    results in:

    [(1, 4, 6), (2, 5, None), (3, None, None)]
    

    The first column is thus:

    map(None, *[(1,2,3,), (4,5,), (6,)])[0]
    #>(1, 4, 6)
    
    0 讨论(0)
  • 2020-12-02 04:37

    One more way using matrices

    >>> from numpy import matrix
    >>> a = [ [1,2,3],[4,5,6],[7,8,9] ]
    >>> matrix(a).transpose()[1].getA()[0]
    array([2, 5, 8])
    >>> matrix(a).transpose()[0].getA()[0]
    array([1, 4, 7])
    
    0 讨论(0)
  • 2020-12-02 04:38
    >>> import numpy as np
    >>> A = np.array([[1,2,3,4],[5,6,7,8]])
    
    >>> A
    array([[1, 2, 3, 4],
        [5, 6, 7, 8]])
    
    >>> A[:,2] # returns the third columm
    array([3, 7])
    

    See also: "numpy.arange" and "reshape" to allocate memory

    Example: (Allocating a array with shaping of matrix (3x4))

    nrows = 3
    ncols = 4
    my_array = numpy.arange(nrows*ncols, dtype='double')
    my_array = my_array.reshape(nrows, ncols)
    
    0 讨论(0)
  • 2020-12-02 04:41

    let's say we have n X m matrix(n rows and m columns) say 5 rows and 4 columns

    matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],[17,18,19,20]]
    

    To extract the columns in python, we can use list comprehension like this

    [ [row[i] for row in matrix] for in range(4) ]
    

    You can replace 4 by whatever number of columns your matrix has. The result is

    [ [1,5,9,13,17],[2,10,14,18],[3,7,11,15,19],[4,8,12,16,20] ]

    0 讨论(0)
  • 2020-12-02 04:42

    Could it be that you're using a NumPy array? Python has the array module, but that does not support multi-dimensional arrays. Normal Python lists are single-dimensional too.

    However, if you have a simple two-dimensional list like this:

    A = [[1,2,3,4],
         [5,6,7,8]]
    

    then you can extract a column like this:

    def column(matrix, i):
        return [row[i] for row in matrix]
    

    Extracting the second column (index 1):

    >>> column(A, 1)
    [2, 6]
    

    Or alternatively, simply:

    >>> [row[1] for row in A]
    [2, 6]
    
    0 讨论(0)
提交回复
热议问题