넘파이 ndarray 개요
- ndarray를 이용해 넘파이에서 다차원 배열을 쉽게 생성, 다양한 연산 수행
In [1]:
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)
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)
- (3,)은 1차원 array로 3개의 데이터를 가짐
- (2, 3)은 2차원 array로, 2개의 row와 3개의 column, 6개의 데이터를 가짐
- (1, 3)은 2차원 array, 1개의 row와 3개의 column
- 데이터값은 서로 동일하나 차원이 달라서 오류가 발생하는 경우가 빈번하므로 차원의 차수를 변환하는 방법을 명확히 알아야 함
In [3]:
#각 array의 차원을 ndarray.ndim으로 확인하기
print('array1: {0}차원, array2: {1}차원, array3: {2}차원'.format(array1.ndim, array2.ndim, array3.ndim))
array1: 1차원, array2: 2차원, array3: 2차원
- array()의 인자로는 리스트가 주로 사용됌, [[ ]]는 2차원과 같은 형태로 쉽게 표현할 수 있기 때문
ndarray의 데이터타입
- ndarray내의 데이터 타입은 그 연산의 특성상 같은 데이터 타입만 가능(int와 float이 같이 있을 수 없음)
In [4]:
list1 = [1, 2, 3]
print(type(list1))
array1 = np.array(list1)
print(type(array1))
print(array1, array1.dtype)
<class 'list'>
<class 'numpy.ndarray'>
[1 2 3] int32
- 다른 데이터 타입이 섞여있는 리스트를 ndarray로 변경하면 크기가 더 큰 데이터 타입으로 일괄 변환 적용됌
In [5]:
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)
['1' '2' 'test'] <U11
[1. 2. 3.] float64
- ndarray내 데이터값의 타입 변경은 astype()으로 가능
In [7]:
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)
[1. 2. 3.] float64
[1 2 3] int32
[1 2 3] int32
'Python > Numpy' 카테고리의 다른 글
넘파이 numpy (5) - concatenate(), 배열 합치기 (1) | 2023.05.22 |
---|---|
넘파이 numpy (4) - random 모듈(rand, randint, randn, choice, seed, etc) (0) | 2023.05.08 |
넘파이 numpy (3) - 행렬 정렬, 내적, 전치 (0) | 2023.04.21 |
넘파이 numpy (2) - arange, reshape, indexing (0) | 2023.04.21 |