- 다차원
- 단 하나의 데이터 타입만 허용(수치연산)
- 일상적으로는 잘 사용하지 않으나(데이터프레임 사용), 딥러닝 코드 구현시 사용
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의 함수(메서드 아님)
- 리스트와 리스트의 결합을 모든 조합으로 리턴해주는 용도
- 리스트만 전달 가능(스칼라 불가, :(콜론) 사용 불가)
'배우기 > 복습노트[Python과 분석]' 카테고리의 다른 글
[복습] Python | 분석 | 의사결정나무(Decision Tree) (1)+ 하루끝(20240124) (0) | 2024.01.26 |
---|---|
[복습] Python | 분석 | 데이터 분석 들어가기 (0) | 2024.01.26 |
[복습] Python 집합연산자(union, intersection, difference, np.union1d, np.intersect1d, np.setdiff1d, pd.merge) (0) | 2024.01.25 |
[복습] Python 중복값 처리(unique, duplicated, drop_duplicates) (0) | 2024.01.25 |
[복습] Python 데이터 병합(pd.concat) (0) | 2024.01.25 |