Introfor

numpy 기초 본문

Doing/Python

numpy 기초

YongArtist 2020. 7. 13. 18:17

python에서 행렬과 선형대수를 다루는 패키지로 Numpy가 있다. Numpy는 C언어로 구현된 파이썬 라이브러리로, 고성능 수치계산을 위해 제작되었다. 이것은 데이터 분석을 할 때 사용되는 라이브러리인 pandas와 matplotlib의 기반으로 사용되기도 한다.

np.array()

import numpy as np

# array() 함수 : 리스트 객체를 주로 인자로 받음. 서로 다른 데이터타입이 존재할 경우, 더 큰 데이터 타입으로 변환
# ndarray.shape : 차원과 크기를 튜플 형태로 나타냄
array1 = np.array([1, 2, 3])
print('array1 type: ', type(array1))
print('array1 array 형태:', array1.shape)

array2 = np.array([[1, 2, 3],
                   [2, 3, 4]])
print('array2 type: ', type(array2))
print('array2 array 형태:', array2.shape)

array3 = np.array([[1, 2, 3]])
print('array3 type: ', type(array3))
print('array3 array 형태', array3.shape)

# ndarray.ndim : array() 함수의 리스트 차원 값을 반환
print(f'array1: {array1.ndim}차원, array2: {array2.ndim}차원, array3: {array3.ndim}차원')
더보기

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)
array1: 1차원, array2: 2차원, array3: 2차원

np.array()는 list와 같은 다양한 형태의 인자를 값으로 받는다. ndarray.shape은 크기와 차원을 튜플 형태로 반환한다. nparray.ndim은 차원의 값 반환한다.

# array() 타입 자동형변환
list1 = [1, 2, 3]
print(type(list1))
array1 = np.array(list1)
print(type(array1))
print(array1, array1.dtype)

list2 = [1, 2, 'test']
array2 = np.array(list2)
print(array2, array2.dtype)

list3 = [1, 2, 3.0]
array3 = np.array(list3)
print(array3, array3.dtype)

# array() 타입 강제형변환
array_int = np.array([1, 2, 3])
array_float = array_int.astype('float64')
print(array_float, array_float.dtype)

array_int1 = array_float.astype('int32')
print(array_int1, array_int1.dtype)

array_float1 = np.array([1.1, 2.1, 3.1])
array_int2 = array_float1.astype('int32')
print(array_int2, array_int2.dtype)
더보기

<class 'list'>
<class 'numpy.ndarray'>
[1 2 3] int32
['1' '2' 'test'] <U11
[1. 2. 3.] float64
[1. 2. 3.] float64
[1 2 3] int32
[1 2 3] int32

ndarray내에 데이터값은 number value, string value, bool value 등이 모두 사용할 수 있다.
숫자형 : int형(8bit, 16bit, 32bit), unsigned int형(8bit, 16bit, 32bit), float형(16bit, 32bit, 64bit, 128bit)
ndarray내의 데이터 타입은 모두 하나로 동일해야 하므로 하나의 다른 값이 존재하면 그 타입보다 상위 데이터 타입으로 자동형 변환한다.
강제형 변환을 하기 위해서 astype()을 사용한다. 데이터 처리에 있어서 많은 양의 데이터를 ndarray로 만들 때 많은 메모리가 사용되는데, 메모리를 더 절약하기 위해 사용한다.

np.arange(), np.zeros(), np.ones()

sequence_array = np.arange(10, 0, -1)
print(sequence_array)
print(sequence_array.dtype, sequence_array.shape)

zero_array = np.zeros((3,2), dtype='int32')
print(zero_array)
print(zero_array.dtype, zero_array.shape)

# dtype 지정하지 않을 시 초기값으로 float64로 지정
one_array = np.ones((3, 2))
print(one_array)
print(one_array.dtype, one_array.shape)
더보기

[10  9  8  7  6  5  4  3  2  1]
int32 (10,)
[[0 0]
[0 0]
[0 0]]
int32 (3, 2)
[[1. 1.]
[1. 1.]
[1. 1.]]
float64 (3, 2)

np.arange() : 파이썬 표준 함수에 있는 range()와 쓰임이 비슷하다.
np.zeros() : 튜플 형태의 shape을 인자로 받으면 모든 값을 0으로 채운 ndarrray를 반환한다.
np.ones() : 튜플 형태의 shape을 인자로 받으면 모든 값을 1로 채운 ndarray를 반환한다. dtype에 대해 정의하지 않으면 default로 float64형의 데이터 타입이 적용된다.

 

'Doing > Python' 카테고리의 다른 글

[data_structure] Queue  (0) 2020.07.21
[Algoritm] Stack  (0) 2020.07.20
문자열 앞 0으로 채우기  (0) 2020.07.05
Python Flask  (0) 2019.12.23
How to release python module  (0) 2019.12.19
Comments