[python] 다차원 배열에서 열을 어떻게 추출합니까?

파이썬에서 다차원 배열에서 열을 추출하는 방법을 아는 사람이 있습니까?



답변

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

“numpy.arange”및 “reshape”도 참조하여 메모리를 할당하십시오

예 : (매트릭스 (3×4)의 형태로 배열 할당)

nrows = 3
ncols = 4
my_array = numpy.arange(nrows*ncols, dtype='double')
my_array = my_array.reshape(nrows, ncols)


답변

NumPy 배열을 사용하고 있습니까? 파이썬에는 배열 모듈이 있지만 다차원 배열을 지원하지 않습니다. 일반적인 파이썬리스트도 1 차원입니다.

그러나 다음과 같은 간단한 2 차원 목록이있는 경우 :

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

다음과 같이 열을 추출 할 수 있습니다.

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

두 번째 열 추출 (인덱스 1) :

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

또는 간단하게 :

>>> [row[1] for row in A]
[2, 6]


답변

당신이 같은 배열을 가지고 있다면

a = [[1, 2], [2, 3], [3, 4]]

그런 다음 첫 번째 열을 다음과 같이 추출하십시오.

[row[0] for row in a]

결과는 다음과 같습니다.

[1, 2, 3]


답변

확인 해봐!

a = [[1, 2], [2, 3], [3, 4]]
a2 = zip(*a)
a2[0]

그것은 zip이 작업을 수행하는 것이 더 깔끔하지만 인수로 단일 배열을 필요로한다는 것을 제외하고는 위와 동일합니다. * a 구문은 다차원 배열을 단일 배열 인수로 압축 해제합니다


답변

def get_col(arr, col):
    return map(lambda x : x[col], arr)

a = [[1,2,3,4], [5,6,7,8], [9,10,11,12],[13,14,15,16]]

print get_col(a, 3)

파이썬에서 map 함수는 또 다른 방법입니다.


답변

>>> x = arange(20).reshape(4,5)
>>> x array([[ 0,  1,  2,  3,  4],
        [ 5,  6,  7,  8,  9],
        [10, 11, 12, 13, 14],
        [15, 16, 17, 18, 19]])

두 번째 열을 원한다면 사용할 수 있습니다

>>> x[:, 1]
array([ 1,  6, 11, 16])


답변

[matrix[i][column] for i in range(len(matrix))]