참고 자료
https://docs.scipy.org/doc/numpy/user/basics.creation.html
파이썬 버전 3.7 기준
NumPy 버전 1.15 기준
본 포스팅에서 다루는 범위는 다음과 같다.
array, zeros, ones, arange, linspace, indices와 같은 배열 생성.
배열(array)의 생성
본 포스팅에서는 ①, ②을 다룬다.
파이썬 내장 객체로부터의 배열 생성
○ 일반적으로 파이썬에서 배열과 유사한 구조(시퀀스형 자료형)로 정리된 수치 데이터는 NumPy 배열로 치환이 가능하다.
▷ NumPy에 내장된 array() 함수를 사용하면 쉽게 치환이 가능하다.
▷ 리스트(list)나 튜플(tuple)이 대표적으로 변경하기 쉬운 자료형이다.
○ 이외에 자료형에 대해서는 파이썬 인터프리터 상에서 array()함수를 직접 활용하여 테스트 해보는 것이 가능하다.
사용 예)
# NumPy import
In[2]: import numpy as np
# List
In[3]: x = np.array([1,2,3])
In[4]: x
Out[4]: array([1, 2, 3])
# Tuple
In[5]: x = np.array((1,2,3))
In[6]: x
Out[6]: array([1, 2, 3])
# Complex
In[7]: x = np.array([1,2,3+3j])
In[8]: x
Out[8]: array([ 1.+0.j, 2.+0.j, 3.+3.j])
# 2-dimensional
In[9]: x = np.array([[1,2,3],[4,5,6],[7,8,9]])
In[10]: x
Out[10]:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
NumPy 자체 함수를 통한 배열 생성
zeros(shape, dtype=float, order='C'), ones(dimensions, dtype=float, order='C')
○ zeros() 함수는 0으로 채워진 배열을 반환하며, 요소별 설명은 다음과 같다.
▷ shape: 배열(행렬)의 크기를 입력받는다.
▷ dtype: 자료형을 입력 받으며, 기본 자료형은 float64이다.
- float, int 형태로 입력하면 각 자료형의 기본값이 들어간다.
- 특정 자료형(예: 'float64', 'int32' 등)을 명확히 입력하고자 할때에는 문자열 형태로 입력해야한다.
▷ order: 메모리 저장방식을 입력하는 항목이며, 'C'와 'F'가 입력가능하다.
- 'C': C언어 타입으로 저장한다. 기본값이다.
- 'F': Fortran언어 타입으로 저장한다.
○ ones() 함수는 1으로 채워진 배열을 반환하며, 이외의 사항은 zeros()함수와 동일하다.
# zeros()
In[12]: x = np.zeros((3,2))
In[13]: x
Out[13]:
array([[ 0., 0.],
[ 0., 0.],
[ 0., 0.]])
# ones()
In[14]: x = np.ones((3,2))
In[15]: x
Out[15]:
array([[ 1., 1.],
[ 1., 1.],
[ 1., 1.]])
arange([start,] end[, step,] dtype=None)
○ arange() 함수는 파이썬 내장 자료형 중 range() 자료형과 유사하다.
○ 각 입력 요소 별 설명은 다음과 같다.
▷ start: 배열의 시작점이며, 생략가능하다.
▷ end: 생성된 배열의 끝점이며, 반드시 입력해야한다.
▷ step: 배열이 증가하는 크기이며, 생략가능하다.
▷ dtype: 파일의 자료형을 입력받는다.
- float, int 형태로 입력하면 각 자료형의 기본값이 들어간다.
- 특정 자료형(예: 'float64', 'int32' 등)을 명확히 입력하고자 할때에는 문자열 형태로 입력해야한다.
▷ 정리하면, start에서 시작하여 end까지 step의 크기로 증가시킨 요소들로 배열을 생성한다.
○ 하나의 숫자만 입력될 경우(start, step이 생략될 경우) 0부터 end-1까지 1씩 증가한 배열을 반환한다.
사용 예)
In[18]: np.arange(4)
Out[18]: array([0, 1, 2, 3])
In[19]: np.arange(1,6)
Out[19]: array([1, 2, 3, 4, 5])
In[20]: np.arange(2,5,0.5)
Out[20]: array([ 2. , 2.5, 3. , 3.5, 4. , 4.5])
In[21]: np.arange(3, dtype='float64')
Out[21]: array([ 0., 1., 2.])
linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
○ matlab에서 제공하는 linspace 기능과 거의 유사하다.
○ 각 입력 요소 별 설명은 다음과 같다.
indices(dimesions, dtype=<class 'int'>)
○ Indices() 함수는 배열의 인덱스 세트를 반환한다.
▷ 각 차원에서 0부터 시작하여 1씩 증가시킨 배열 세트를 반환한다.
▷ 2차원 행렬를 예를 들어보면, 행에서 1씩 증가시킨 배열 하나와, 열에서 1씩 증가시킨 배열하나로 출력한다.
사용 예)
In[34]: np.indices((3,3))
Out[34]:
array([[[0, 0, 0],
[1, 1, 1],
[2, 2, 2]],
[[0, 1, 2],
[0, 1, 2],
[0, 1, 2]]])
In[35]: np.indices((2,4))
Out[35]:
array([[[0, 0, 0, 0],
[1, 1, 1, 1]],
[[0, 1, 2, 3],
[0, 1, 2, 3]]])
이외에도 zeros_like, ones_like, empty, empty_like, numpy.random.rand, numpy.random.randn와 같은 자체 생성 함수가 있으며, 함수로부터 생성하는 fromfunction과 파일로부터 불러오는 fromfile도 있다.
'Python > NumPy' 카테고리의 다른 글
NumPy(넘파이)에서의 indexing(인덱싱) - NumPy(6) (0) | 2019.02.08 |
---|---|
genfromtxt을 통한 배열(array) 생성 상세 - NumPy(5) (0) | 2019.02.03 |
genfromtxt을 통한 배열(array) 생성 기초 - NumPy(4) (0) | 2019.02.02 |
NumPy의 데이터 타입(자료형), 관련된 함수 - NumPy(2) (0) | 2019.01.15 |
넘파이(NumPy) 개요 - NumPy(1) (0) | 2019.01.13 |
댓글