[ML] Numpy 기본적인 메서드
포스트
취소

[ML] Numpy 기본적인 메서드

본 포스팅은 “파이썬 머신러닝 완벽가이드” - (위키북스, 권철민 지음)을 바탕으로 공부한 내용을 정리한 것입니다.

  1. ndarray의 데이터 타입
  2. arange, zeros, ones
  3. reshape

1. ndarray의 데이터 타입

ndarray 내의 데이터 타입은 연산의 특성상 같은 데이터 타입만 가능하다.

dtype 속성으로 확인이 가능하다.

1
2
3
4
5
list1 = [1, 2, 3]
print(tpye(list1))
array1 = np.array(list1)
print(type(array1))
print(array1, array1.dtype)

[결과]

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

다른 데이터 유형이 섞여있는 리스트를 ndarray로 변경하면 데이터 크기가 더 큰 데이터 타입으로 형 변환을 일괄 적용한다.

1
2
3
4
5
6
7
list2 = [1, 2, 'test']
array2 = np.array(list2)
print(array, array2.dtype)

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

[결과]

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

ndarray 내 데이터 타입 변경은 astype() 메서드를 이용

메모리로 데이터를 전체 로딩한 다음 알고리즘을 적용하는 파이썬 기반 머신러닝 알고리즘 특성상 메모리 절약을 위해 사용되곤 한다.

1
2
3
array_int = np.array([1, 2, 3])
array_float = array_int.astype('float63)
prin(array_float, array_float.dtype)

[결과]

1
[1. 2. 3.] float64

2. arange, zeros, ones

테스트용 데이터, 연속값, 0과 1로 초기화 등의 상황에서 사용하는

arrange(), zeros(), ones()

1
2
3
4
5
6
7
8
sequence_array = np.arnage(10)
print(sequence_array, sequence_array.dtype, sequence_array.shape)

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

one_array = np.ones((3,2))
print(one_array, one_array.dtype, one_array.shape)

[결과]

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

[[0 0]
 [0 0]
 [0 0]]
int32 (3,2)

[[1. 1.]
 [1. 1.]
 [1. 1.]]
float64 (3,2)

3. reshape

ndarray를 특정 차원 및 크기로 변환하는 reshape()

-1을 인자로 사용하면 호환되는 새로운 shape로 변환해준다.

1
2
3
4
array1 = np.arange(10)
array2 = array1.reshape(-1,5)
array3 = array1.reshape(5,-1)
print(array1, 'array2 shape:', array2.shape, 'array3 shape:', array3.shape)

[결과]

1
2
3
[0 1 2 3 4 5 6 7 8 9]
array2 shape: (2,5)
array3 shape: (5,2)

보통 reshape(-1,1)의 형태로 자주 사용한다. 어떤 형태라도 2차원으로 변환한다.


참고

“파이썬 머신러닝 완벽가이드” - (위키북스, 권철민 지음)

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.