일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 사회조사분석사 2급 기출문제집
- 사회조사분석사 2급 필기 요약정리
- 사회조사분석사2급실기신청꿀팁
- BFS
- 그리디
- 사회조사분석사 2급 독학
- 공모주청약
- 사회조사분석사 2급 필기 공부방법
- 시물레이션
- 알고리즘
- 2월공모주
- DFS
- 파이썬 정렬
- 현대엔지니어링 수요예측
- 머신러닝
- 사회조사분석사 2급 접수
- 사회조사분석사 2급
- 사회조사분석사2급실기신청
- 벽부수고이동하기 파이썬
- 사이킷런
- 공모주 청약
- 백준
- 너비우선탐색
- 사회조사분석사 2급 공부방법
- 정렬
- 현대엔지니어링
- 사회조사분석사 2급 필기 시험시간
- 오미크론 자가격리
- 백준 알고리즘
- 공모주
- Today
- Total
세상을 바꾸는 데이터
[Numpy] 넘파이 - ndarray 생성 및 데이터 타입 본문
가장 먼저 넘파이 모듈 임포트 한다.
import numpy as np
- np.array( )
넘파이 array() 함수는 파이썬의 리스트와 같은 다양한 인자를 받아서 ndarray로 변환하는 기능을 수행한다.
생성된 ndarray 배열의 shape 변수는 ndarray의 크기와 ndarray 배열의 차원을 알 수 있다.
ndarray 생성 및 크기 확인
array1 = np.array([1,2,3]) # 1차원 배열
print('array1 type:',type(array1))
print('array1 array 형태:',array1.shape)
array2 = np.array([[1,2,3],
[2,3,4]]) # 2차원 배열
print('array2 type:',type(array2))
print('array2 array 형태:',array2.shape)
array3 = np.array([[1,2,3]]) # 1차원 배열
print('array3 type:',type(array3))
print('array3 array 형태:',array3.shape)
[Output]
array1 type: <class 'numpy.ndarray'>
array1 array 형태: (3,)
array2 type: <class 'numpy.ndarray'>
array2 array 형태: (2, 3)
array3 type: <class 'numpy.ndarray'>
array3 array 형태: (1, 3)
ndarray 차원 확인
- ndarray.ndim
각 array의 차원을 ndarray.ndim을 이용해 확인한다.
print('array1: {:0}차원, array2: {:1}차원, array3: {:2}차원'.format(array1.ndim,array2.ndim,array3.ndim))
[Output]
array1: 1차원, array2: 2차원, array3: 2차원
ndarray의 데이터 타입
ndarray내의 데이터 타입은 dtype속성으로 확인할 수 있다.
※주의※
ndarray내의 데이터 타입은 그 연산의 특성상 같은 데이터 타입만 가능하다. 예를 들어 한 개의 ndarray 객체에 int와 float가 함께 있을 수 없다.
list1 = [1,2,3]
print(type(list1))
array1 = np.array(list1)
print(type(array1))
print(array1, array1.dtype)
print('########')
list2 = [1, 2, 'test']
array2 = np.array(list2)
print(array2, array2.dtype)
print('########')
list3 = [1, 2, 3.0]
array3 = np.array(list3)
print(array3, array3.dtype)
[Output]
<class 'list'> # list1의 데이터 타입 리스트
<class 'numpy.ndarray'> # array1의 데이터 타입 ndarray
[1 2 3] int32 # 변경된 array1 내의 데이터값은 모두 int32
########
['1' '2' 'test'] <U11 # array2 데이터와 데이터 타입
########
[1. 2. 3.] float64 # array3 데이터와 데이터 타입
ndarray를 편리하게 생성하기 - arange, zeros, ones
- np.arange( )
- np.zeros( )
- np.ones( )
특정 크기와 차원을 가진 ndarray를 연속 값이나 0 또는 1로 초기화해 쉽게 생성해야 할 필요가 있는 경우가 발생할 수 있다. arange( ), zeros( ), ones( )는 주로 테스트용으로 데이터를 만들거나 대규모의 데이터를 일괄적으로 초기해해야 할 경우에 사용한다.
arange( )는 0부터 함수 인자 값 -1까지의 값을 순차적으로 ndarray의 데이터 값으로 변환해준다.
sequence_array = np.arange(10) # 0부터 1씩 더해 9까지 구성
print(sequence_array)
print(sequence_array.dtype, sequence_array.shape)
[Output]
[0 1 2 3 4 5 6 7 8 9]
int32 (10,)
zeros( )는 함수 인자로 튜플 형태의 shape 값을 입력하면 모든 값을 0으로 채우고, ones( )는 유사하게 모든 값을 1로 채운 해당 shape를 가진 ndarray로 반환시킨다.
zero_array = np.zeros((3,2),dtype='int32') # (3,2) 행렬에 모두 0으로 채운 배열
print(zero_array)
print(zero_array.dtype, zero_array.shape)
one_array = np.ones((3,2)) # (3,2) 행렬에 모두 1으로 채운 배열
print(one_array)
print(one_array.dtype, one_array.shape)
[Output]
[[0 0]
[0 0]
[0 0]]
int32 (3, 2)
[[1. 1.]
[1. 1.]
[1. 1.]]
float64 (3, 2)
ndarray의 차원과 크기를 변경하는 reshape( )
- ndarray.reshape( )
reshape( ) 매서드는 ndarray를 특정 차원 및 크기로 변환한다. 만약 지정된 사이즈로 변경이 불가능하면 오류를 발생시킨다. 예를 들어 (15, ) 데이터를 (4, 4) shape 형태로 변경할 수 없다.
array1 = np.arange(10) # 0부터 1씩 증가한 값들을 가진 원소 생성
print('array1:\n', array1)
array2 = array1.reshape(2,5) # 2x5행렬 변환
print('array2:\n',array2)
array3 = array1.reshape(5,2) # 5x2행렬 변환
print('array3:\n',array3)
[Output]
array1:
[0 1 2 3 4 5 6 7 8 9]
array2:
[[0 1 2 3 4]
[5 6 7 8 9]]
array3:
[[0 1]
[2 3]
[4 5]
[6 7]
[8 9]]
reshape( )를 실전에서 효율적으로 사용하는 경우는 인자를 -1로 적용시키는 경우이다. 물론 -1을 사용하더라도 호환될 수 없는 형태는 변환할 수 없다.
array1 = np.arange(10)
print(array1)
#컬럼 axis 크기는 5에 고정하고 로우 axis크기를 이에 맞춰 자동으로 변환. 즉 2x5 형태로 변환
array2 = array1.reshape(-1,5)
print('array2 shape:',array2.shape)
print('array2:\n', array2)
#로우 axis 크기는 5로 고정하고 컬럼 axis크기는 이에 맞춰 자동으로 변환. 즉 5x2 형태로 변환
array3 = array1.reshape(5,-1)
print('array3 shape:',array3.shape)
print('array3:\n', array3)
[Output]
[0 1 2 3 4 5 6 7 8 9]
array2 shape: (2, 5)
array2:
[[0 1 2 3 4]
[5 6 7 8 9]]
array3 shape: (5, 2)
array3:
[[0 1]
[2 3]
[4 5]
[6 7]
[8 9]]
다음 포스트에서는 넘파이의 데이터 세트를 선택할 수 있는 인덱싱에 대해 다루어 보겠다.
Reference
https://github.com/chulminkw/PerfectGuide
https://ichi.pro/ko/numpy-array-cookbook-python-eseo-baeyeol-saengseong-mich-jojag-36927115397897
https://www.w3resource.com/numpy
'ML > Numpy' 카테고리의 다른 글
[Numpy] 넘파이 - 행렬(Matrix) (1) | 2022.01.19 |
---|---|
[Numpy] 넘파이 - 인덱싱(Indexing) (1) | 2022.01.19 |
[Numpy] Intro (2) | 2022.01.17 |