본문 바로가기

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

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

728x90
반응형

https://metime.tistory.com/307

 

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

- 다차원 - 단 하나의 데이터 타입만 허용(수치연산) - 일상적으로는 잘 사용하지 않으나(데이터프레임 사용), 딥러닝 코드 구현시 사용 1. 생성 1차원 array 생성 2차원 array 생성 위와 같은 방법으

metime.tistory.com

 

지난 글 이어서 array 자료구조를 공부해보겠다.

 

위 링크에서 1. 생성, 2. 주요메서드, 3.색인을 살펴보았다.

 

** np.ix_ : 리스트로 색인값을 연다라 전달할 경우 point indexing으로 해석되는 것을 방지

  - 리스트만 값으로 전달 가능

  - 스칼라, 콜론 전달 불가

 

 

예)

위 array에서 8, 10, 13, 15를 추출하고자 한다면

연속 범위라면 슬라이스를 사용하면 된다.

 

리스트와 리스트가 오게 되면 point로 인식하여 출력하게 된다.

p(1,2)와 p(2,4)의 출력으로 해석하기 때문이다.

 

 

위를 방지하는 것이 np.ix_ 이다.

이같은 방법으로 처리 가능하지만 list로만 들어갈 수 있다.

 

 

 

 

 

3차원 배열로 확장해보자.

R과 배열 순서에서 차이가 난다.

 

in R)

2차원: 행(1)  열(2)

3차원: 행(1)  열(2)  층(3)

 

in Python)

2차원: 행(0)  열(1)

3차원: 층(0)  행(1)  열(2)

 

R은 행이 1, 열이 2인데 층이 생기면 층은 3이 된다. 층이 나타나더라도(3차원이 되더라도) 층이 마지막에 붙기 때문에 배열 순서가 행열층이 되면서 순서가 123이 된다.

그러나 파이썬은 3차원이 되면서 층이 앞으로 빠지게 된다. 그래서 층이 0, 행이 1, 열이 2가 된다. 즉 2차원일 때 행은 0인데 3차원이 되면 1이 된다는 의미이다.

 

3차원 배열은 위와 같이 생성하는데 매번 직접 만들기가 번거롭다.

 

 

위와 같이 만들 수도 있다.

 

 

첫 번째 층 선택. 차원축소가 발생한다.

 

슬라이스 색인을 이용하여 첫 번째 층을 선택하면 차원축소가 방지된다.

 

 

각 층마다 두 번째 컬럼을 선택한다(차원축소 발생).

위처럼 각 층마다 두 번째 컬럼을 선택하는데 차원축소를 방지한다.

차원축소를 방지하면 서로 다른 층에서 온 것이라는 정보를 확인하기가 쉽다.

 

이번엔 a2의 2, 3, 4, 5, 20, 30, 50, 60 을 추출하려고 하는데, a2[:,[0,1],[1,2]] 이렇게 추출하면 point indexing으로 되기 때문에 각 층마다 p(0,1), p(1,2)를 출력하게 된다.

방법은 np.ix_를 써야 한다.

 

반응형

 

 

예제를 풀어보자.

위의 a3 배열에 대하여 

 

1) 22, 23, 24, 27, 28, 29 출력하여라

 

또는

 

 

2) 8, 10, 18, 20 출력하여라

 

 

3) 각 층마다 두 번째, 네 번째 행 선택하여라

 

 

4) 7, 19, 27, 39, 47, 59 선택하여라

위 문제는 point indexing으로 풀면 해결된다.

각 층마다 p(1,1), p(3,3)을 출력하면 되기 때문이다.

 

 

 

 

예) 3차원 배열의 연산

층별: axis = 0, 서로 다른 층끼리 연산(나머지는 다 동일)

행별: axis = 1, 서로 다른 행끼리 연산(나머지는 다 동일)

열별: axis = 2, 서로 다른 열끼리 연산(나머지는 다 동일)

 

a2 로 이해해보자.

a2의 층별 총 합이라고 한다면 행과 열은 같은 위치이면서 층만 다르면 1, 10을 더하고, 2, 20을 더하고 3, 30을 더하고... 하는 것이다.

 

이렇게 연산이 되는 것이다.

 

 

행별 연산은 어떻게 이루어지는지 확인해보자.

 

같은 층의 같은 컬럼을 계산하게 된다.

 

 

열별 연산은 다음과 같다.

이렇게 연산이 되는 것이다.

 

 

 

누적합은 다음과 같다.

 

누적합은 cumsum으로 계산한다.

위는 서로 다른 층끼리 누적에 대한 개념이다.

 

 

누적곱은 다음과 같다.

누적곱은 cumprod로 계산한다.

 

728x90
반응형