https://metime.tistory.com/312
위 게시글에 이어 마지막 array 정리이다.
1. 생성
2. 주요메서드
3. 색인
4. 3차원 배열의 연산
까지 위 링크에 정리했다.
5. 변경(행 추가, 열 추가)
- np.vstack, np.hstack
예) 행 추가(결합)
pd.concat을 사용하여 a1과 a2를 결합하고자 한다.
함수는 원래 안에 들어가는 객체가 어떤 것이 와도 상관이 없는데 여기서는 에러 메시지 일부 중에 only Series and Dataframe 이라고 나온다. 즉 array는 concat으로 전달이 불가하다.
pd.concat을 사용하겠다면 아래와 같이 사용할 수 있겠으나 속도 측면에서 비효율적이라 권장하는 방법은 아니다.
np.vstack 을 사용하여 리스트나 튜플로 묶으면 표현이 가능하다.
array의 행추가/열추가는 각각 np.vstack, np.hstack 을 기억해두자.
np.concatenate를 사용해서도 표현이 가능하다.
예) 컬럼 추가(결합)
아래 두 array를 가로방향으로 결합하여라.
이렇게 np.hstack을 사용하거나 또는
np.concatenate로도 가능하다.
6. 연산(broadcast)
- 작은 쪽 배열을 행별, 열별 반복
- 두 가지 조건이 성립하여야 한다.
1) 양 객체의 같은 방향의 크기 공유(행 사이즈가 서로 같거나 열 사이즈가 서로 같아야 함)
2) 더 작은 쪽 객체의 공유하지 않는 쪽의 크기가 1이어야 함
위와 같은 배열이 정의되어있다.
a1+ a2는 에러가 난다.
더 작은 쪽의 객체의 공유하지 않는 쪽의 크기가 1이 되지 않기 때문에 broadcast가 되지 않았다.
a1+a5는 다음과 같이 계산된다.
아래와 같은 array를 생성해보았다.
그리고 a1+a6 를 시도했을 때 에러가 났다.
행과 열의 구성을 살펴보면 4X5, 1X4여서 불가하기 때문이다.
대신 a6을 reshape 하면 가능하다.
4X5와 4X1 의 연산으로 바뀌기 때문에 broadcast가 가능해진다.
반복 가능한 객체끼리의 연산
위에서 a1+a2는 불가함을 확인하였다.
a2가 a1 위 아래로 두 번 배치되어 계산되도록 유도하고자 한다.
그 때에는 np.tile 이라는 함수를 사용하면 되겠다.
a2를 np.tile 함수를 적용시키면, 행 방향으로 두 번 반복되는 개념이 된다.
따라서 이렇게 적용한 결과를 a1과 합하면 다음과 같다.
예) 6X8 + 2X2
행 방향 세 번 컬럼 방향 네 번 확장되도록 만들면 두 배열의 합이 가능하다.
'배우기 > 복습노트[Python과 분석]' 카테고리의 다른 글
[실습문제] 2024. 1. 26.(금) (2문제) (0) | 2024.01.30 |
---|---|
[복습] Python | 분석 | 랜덤포레스트(Random Forest, RF)(1) + 하루끝(20240126) (0) | 2024.01.30 |
[복습] Python 벡터화 내장된 문자열 메서드(str) (0) | 2024.01.29 |
[Python] 의사결정나무(Decision Tree) 시각화 하기 (0) | 2024.01.27 |
[복습] Python | 분석 | 의사결정나무(Decision Tree) (2) (0) | 2024.01.27 |