본 포스팅은 “파이썬 머신러닝 완벽가이드” - (위키북스, 권철민 지음)을 바탕으로 공부한 내용을 정리한 것입니다.
- ndarray의 데이터 타입
- arange, zeros, ones
- 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차원으로 변환한다.
참고
“파이썬 머신러닝 완벽가이드” - (위키북스, 권철민 지음)