⭐ ndim : ndarray의 차원 나타냄 , 1⇒ 1차원
⭐ shape : 각 차원의 ndarray 크기를 튜플 형태로 나타냄, 가로(행) x개, 세로(열) y개, 3행 4열 ⇒ (3, 4)
⭐ size : ndarray에 있는 요소의 총 수
⭐ dtype : ndarray의 데이터 유형, int8~int64, float16~float128
⭐ dtypes : column 별 데이터 타입 확인
⭐ T : ndarray의 전치된 결과 반환 (행열 바꾸기) ⇒ transfer됨
⭐ astype() : ndarray의 모든 요소들의 타입을 한 번에 형 변환
⭐ reshape : (1, 8)짜리 배열이 reshape(4,4)짜리로 변환, 재대입 필수
array = np.array([[1, 2], [3, 4]])
print('array의 차원:', array.ndim) # 2
print('array의 각 차원별 크기:', array.shape) # (2, 2)
print('array의 요소의 총 개수:', array.size) # 4
print('array의 데이터 유형:', array.dtype) # int32
print('전치 후 ',array.T)
>>
[[1 3]
[2 3]]
import sys
arr = np.array([1,2,3,4])
arr # array([1, 2, 3, 4])
print(arr.dtype) # int32
arr_f = np.array([1,2,3,4], dtype=np.int64)
arr_f # array([1, 2, 3, 4], dtype=int64)
# 메모리에 올라갈 데이터의 크기가 다르다
print(sys.getsizeof(arr)) # 120
print(sys.getsizeof(arr_f)) # 136
arr1 = np.array([[1.0, 2, 3],
[4, 5, 7]], dtype=np.int32)
arr1
>>array([[1, 2, 3],
[4, 5, 7]])
arr1 = np.array([[1.0, 2, 3],
[4, 5, 7]], dtype=np.int32)
arr1
'''
array([[1, 2, 3], => 1.0이 int32로 형변환 됨
[4, 5, 7]])
'''
type : 객체의 형을 묻는
dtype : array의 데이터 형을 묻는
np.array 만들 때 dtype=float 와 같이 데이터 타입을 지정하여 생성할 수 있다
dtype이 int32 와 int64는 메모리를 차지하는 크기가 다르다
- ⭐ astype() : ndarray의 모든 요소들의 타입을 한 번에 형 변환
# 함수 사용
print(type(arr1)) # <class 'numpy.ndarray'> <-> dtype과 다름!!
print(arr1)
print(np.ndim(arr1)) # 2 => 이차원
print(np.shape(arr1)) # (2, 3) => 2행 3열
# 속성 사용
print(arr1.ndim)
print(arr1.shape)
print(arr1.size) # 6 => 요소 개수
print(arr1.dtype) # int32 <-> type() 함수와 다름!!!
# ndarray 안에 들어있는 모든 요소들의 타입을 한 번에 float32 타입으로 변환
arr1_1 = arr1.astype(np.float32)
print(arr1_1)
'''
[[1. 2. 3.]
[4. 5. 7.]]
'''
# reshape()
arr_r = np.arange(32).reshape(4, 8) # 0~31개의 요소를 4행 8열로 만들기
print(arr_r)
astype()으로 형변환하여 새로운 array 생성하여도 원본은 유지됨
a = np.array([1, 2, 3])
print(a) # [1 2 3]
print(a.dtype) # int64
a_float = a.astype(np.float32)
print(a_float) # [1. 2. 3.]
print(a_float.dtype) # float32
print(a) # [1 2 3]
print(a.dtype) # int64
x = np.arange(1,5).reshape(2,2)
x
'''
array([[1, 2],
[3, 4]])
'''
x.astype(np.int32)
np.int32(x)
x.astype('int')
'''
array([[1, 2],
[3, 4]])
'''
x = x.astype(np.float)
print(x.dtype) # float64
⭐ Numpy Array의 형태를 바꾸기 위해서는 reshape 함수를 이용
reshape 할 때는 요소의 개수를 고려해서 합당하게 만들어야 함
shape이 (1,8)인 array는 (2,4)로 변경 가능, (3,3)으로는 변경 불가능
array = np.arange(8)
array, array.shape # (array([0, 1, 2, 3, 4, 5, 6, 7]), (8,))
array.reshape(1,8)
array = array.reshape(2, 4)
array
'''
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
'''
shape이 (1,9)인 array [1,2,3,4,5,6,7,8,9] 를 (3,3)으로 reshape() 가능
-1(와일드카드)은 딱 한 번만 사용할 수 있으며 자동으로 적절한 형태를 계산
(3,-1)도 가능 → 행을 fix! 3행을 만들고 열은 알아서 조정해라! 요소가 9개였으니 자동으로 열은 3 →(3,3)으로 됨
(-1, 3)도 가능 → 열은 3으로 fix! 행은 알아서 조정! (3,3)으로 나옴
(4,-1)은 불가능 → 행이 4일 때 열이 조정되지 않음, 요소의 개수가 9개이기 때문에 9의 약수로만 가능
array = np.arange(16)
array, array.shape
>>
(array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
(16,))
array.reshape(1,8) # array([0, 1, 2, 3, 4, 5, 6, 7])
array.reshape(2, 4).shape # (2, 4)
array = array.reshape(-1,2)
array
'''
array([[0, 1],
[2, 3],
[4, 5],
[6, 7]])
'''
✔️ 정리
- Numpy는 numeric python의 약자로 리스트와 형태는 같지만 ndarray 타입으로 바꾸면 연산이 가능하다
- 리스트는 연산이 불가능하다
'Python > 데이터 분석' 카테고리의 다른 글
[Numpy] Numpy 배열의 정렬 (0) | 2022.04.02 |
---|---|
[Numpy] Numpy 배열의 Indexing & Slicing (0) | 2022.04.02 |
[Numpy] Numpy 배열의 연산 (0) | 2022.04.02 |
[Numpy] Numpy (0) | 2022.04.02 |
[Python] Numpy 심화 (0) | 2022.03.17 |
댓글