본문 바로가기

배우기/복습노트[Python과 분석]

[복습] Python 자료구조(4) (array)

728x90
반응형

- 다차원

- 단 하나의 데이터 타입만 허용(수치연산)

- 일상적으로는 잘 사용하지 않으나(데이터프레임 사용), 딥러닝 코드 구현시 사용

 

 

 

1. 생성

1차원 array 생성 

 

 

2차원 array 생성

 

위와 같은 방법으로 array 생성이 가능하다.

 

 

 

 

 

 

2. 주요 메서드

차원수는 ndim으로 확인할 수 있다.

 

shape 메서드를 사용하면 몇 곱하기 몇으로 이루어진 array인지 알 수 있다.

 

 

따라서 shape 메서드를 사용하면 행의 수, 열의 수를 따로 추출할 수 있다.

 

 

위에서 정의한 a3 배열에 대하여, 배열 모양을 변경하려면 reshape 메서드를 사용하면 된다.

파이썬은 행 우선순위어서 컬럼을 우선 채우게 된다.

디폴트는 order = 'C' 인데, 이는 C언어 순서라는 의미이다. 

 

order = 'F'  옵션을 줴 되면 포트란 순서라는 의미로, 컬럼 우선 배치가 된다.

 

행렬을 만들 때 행이 정해지면 열은 자동으로 정해지기 때문에 열 자리에 -1을 넣어도 array가 생성된다.

즉 다른 축 크기가 결정되면 나머지 축의 크기는 자동결정된다.

 

 

 

1차원으로 만들기

아까 위에서 선언한 변수 a2는 아래와 같다.

언뜻 보면 1차원으로 보이지만 2차원의 array이다.

이 변수에 평탄화 메서드를 사용하면 1차원으로 축소할 수 있다.

 

 

flatten 메서드를 사용하면 차원 축소를 할 수 있다.

flatten도 order='C'가 default이다.

order = 'F' 로 변경하여보자.

 

 

 

 

위와 같이 옵션에 따라 배열 결과가 달라짐을 확인했다.

즉 reshape이든, flatten이든 2차원이 1차원이 될 때 순서에 따라 값이 달라지므로 순서에 유의하여야 한다.

 

 

 

 

3. 색인

아래의 array에서 원소를 추출하여보자.

 

1) 8을 추출

스칼라가 리턴 된다.

차원축소를 방지하기 위해서는 아래처럼 슬라이스 색인을 하면 되겠다.

 

 

 

 

2) 두 번째 행 추출

차원축소가 된다.  즉 1차원이 리턴된다.

슬라이스 색인을 하면 차원축소 방지로 2차원이 출력된다.

 

 

 

3) 세 번째, 마지막 컬럼 추출

또는,

 

 

 

4) 두 번째 ~ 네 번째 행의 두 번째 ~ 네 번째 컬럼 추출

 

 

5) 7, 10, 17, 20 추출

이 문제는 이제까지의 방법처럼 추출할 수가 없다.

위 코드에 대한 해석을 잠시 해보자면,

in R) R에서는 1,3 위치의 행 선택 후 1, 4 위치의 컬럼을 선택하게 된다 → 네 개의 값이 출력된다.

in Python) 파이썬에서는 point(1,1)과 point(3,4)를 선택한다. 즉 point indexing이다. 좌표로 해석한다는 의미이다. → 두 개의 값이 출력

 

따라서 7, 10, 17, 20을 추출하려면 색인함수를 사용하여야 한다.

np.ix_ 는 numpy용 색인이다. 메서드가 아니고 함수임에 유의하자. np.ix_를 사용하면 문제에서 원하는 전체 대상이 리턴된다.

 

np.ix_를 정리하자면,

  - np의 함수(메서드 아님)

  - 리스트와 리스트의 결합을 모든 조합으로 리턴해주는 용도

  - 리스트만 전달 가능(스칼라 불가, :(콜론) 사용 불가)

 

 

728x90
반응형