도움 : Quickstart tutorial - Numpy v1.19.dev() Manual
Quickstart tutorial — NumPy v1.19.dev0 Manual
NumPy provides familiar mathematical functions such as sin, cos, and exp. In NumPy, these are called “universal functions”(ufunc). Within NumPy, these functions operate elementwise on an array, producing an array as output. See also all, any, apply_along_a
numpy.org
# 넘파이 베이직
넘파이는 다차원의 배열 데이터를 효율적으로 다루고 처리하기 위해 태어났다. 넘파이의 배열 데이터는 보통 숫자로 이루어진 원소들의 테이블(table) 이며, 어떤 배열 데이터든 모두 같은 데이터타입을 가지고, 음이 아닌 정수의 튜플 값으로 참조될 수 있다.
넘파이의 차원(dimension)은 axis(복수형 axes) 라고 불린다.
예를 들어, [1, 2, 1] 은 길이(length)가 3인 하나의 axis 를 가지고 있으며,
[[1, 0, 0], [0, 1, 2]] 는 두개의 axes 를 가지고 있다. 이때 첫번째 axis 는 길이가 2이고, 두번째 axis 는 길이가 3이다.
* 먼저 원소가 [1, 0, 0] , [0, 1, 2] 두 개, 각각의 원소가 가지고 있는 원소가 3개
넘파이의 array 클래스는 ndarray 라고 불리며, 단순하게 array 라고도 한다. 이때 주의할 점은 numpy.array 는 파이썬 기본 라이브러리 클래스인 array.array 와 다르다는 것이다. numpy.array 클래스는 1차원 이상의 다차원 배열을 다룰 수 있으며 더 많은 기능들을 제공한다. ndarray의 주요한 특성들은 다음과 같다.
ndarray.ndim
- 배열의 차원의 수 (number of axes)
ndarray.shape
- 배열의 차원, 각각의 차원에서 배열의 크기를 나타내는 정수의 튜플값으로 반환되며, 예를 들어 n행 m열로 이루어진 행렬의 shape는 (n,m) 이다. shape 튜플의 길이는 차원의 수(ndim)과 같다.
ndarray.size
- 배열의 원소의 총 합의 개수. shape 의 원소들의 곱과 같다.
ndarray.dtype
- 배열의 원소들의 타입. 넘파이에서는 numpy.int32, numpy.int16, numpy.float64 와 같은 넘파의 타입을 제공하며, 파이썬의 기본적인 타입을 사용해서 dtype 을 정의할 수도 있다.
ndarray.itemsize
- 배열의 각각의 원소의 byte 사이즈. 예를들어 float64 타입의 itemsize는 8이고, complex32 타입의 itemsize 는 4이다. ndarray.dtype.itemsize 와 동일하다.
Numpy에서 배열을 만들기 위해서는 np.array() 메서드를 이용한다. 이 때 매개변수로 한번에 여러 개의 데이터를 줄 수 없으며, 반드시 하나로 된 데이터를 입력해야 한다.
ex) np.array(1, 2, 3, 4) -> error / np.array([1, 2, 3, 4]) -> ok
np.array() 는 자동적으로 배열의 모양을 조정해 준다. 가령 axes 가 2인 배열을 2차원 행렬 모양으로 출력한다.
또한 결과를 출력할 때 데이터 타입 역시 반영한다.
b = np.array([(1.5,2,3), (4,5,6)])
b
"""
array([[ 1.5, 2. , 3. ],
[ 4. , 5. , 6. ]])
"""
b의 원소 중 1.5 가 있어서 위 배열의 데이터 타입은 float64가 되며 따라서 결과를 출력할 때 원소가 정수 형태이더라도 뒤에 float 데이터임을 나타내주는 . 이 붙게 된다. complex dtype 도 마찬가지 이다.
c = np.array( [ [1,2], [3,4] ], dtype=complex )
c
"""
array([[ 1.+0.j, 2.+0.j],
[ 3.+0.j, 4.+0.j]])
"""
Numpy의 zeors() 메서드는 모든 원소가 0인 배열을 반환하며, ones() 메서드는 모든 원소가 1인 배열을 반환한다. 기본적으로 생성된 배열의 데이터 타입은 float64 이다.
일련의 숫자들의 집합을 생성하기 위해, Numpy 에서는 python의 range() 와 비슷한 arange() 메서드를 제공한다. 차이점은 arange() 메서드는 결과로서 배열을 반환한다.
사용법은 np.arrange(a, b, c) 형태이며, 이는 범위 a 부터 b 값 까지 c 의 간격으로 숫자들을 반환하라는 명령이다.
비슷한 메서드로 linspace() 가 있는데, np.linspace(a, b, c) 는 범위 a 부터 b 값까지 c 개의 숫자들을 반환하라는 의미이다.
'Python > Numpy' 카테고리의 다른 글
Numpy 모듈을 활용한 행렬의 대각화 [시행착오(1)] (3) | 2019.11.26 |
---|
댓글