ndarray의 차원과 데이터 타입

코드싸개·2020년 12월 15일
1
post-custom-banner

ndarray의 차원

import numpy as np
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)

print('array1: {:0}차원, array2: {:1}차원, array3: {:2}차원'.format(array1.ndim, array2.ndim, array3.ndim))

[Output]

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차원

array1는 1차원 array로 3개의 데이터를 갖고 있습니다.
array2는 2차원 array로 2개의 로우와 3개의 칼럼으로 총 6개의 데이터를 갖고 있습니다.
array3은 2차원 array로 1개의 로우와 3개의 칼럼을 가지고 있습니다.

ndarray의 데이터 타입

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

[Output]

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

리스트에서 integer였던 값은 ndarray에서도 int값을 갖습니다.

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)

[Output]

['1' '2' 'test'] <U21
[1. 2. 3.] float64

서로 다른 데이터 타입이 섞여 있을 경우 데이터 타입이 더 큰 데이터 타입으로 변환되어 저장되므로 list2의 int형이 유니코드 문자열로 변환되었습니다. 또한 list3의 int형이 float형으로 변환된 것을 알 수 있습니다.

array_float1 = np.array([1.1, 2.1, 3.9])
array_int2 = array_float1.astype('int32')
print(array_int2, array_int2.dtype)

[Output]

[1 2 3] int32

float형의 ndarray를 int로 바꾸면 소숫점은 절삭됩니다.

Source: 파이썬 머신러닝 완벽 가이드 / 위키북스

profile
데이터 분석 공부용 벨로그
post-custom-banner

0개의 댓글