DevSSOM

파이썬 Numpy - 배열의 기초 본문

Python/기초

파이썬 Numpy - 배열의 기초

데브쏨 2021. 7. 26. 12:21
반응형

배열의 데이터 타입 dtype

넘파이의 array는 파이썬 리스트와 달리 같은 데이터 타입만 저장이 가능함. 파이썬 리스트는 list = [1, 1.4, True, "S"] 이렇게 하나의 리스트에 다양한 데이터들을 넣을 수 있는 반면, 넘파이의 배열은 여러 데이터 타입들을 함께 쓸 수 없고, 하나의 형식만 저장할 수 있음. 넘파이 배열 = 단일 데이터.

arr = np.array([0, 1, 2, 3, 4], dtype=float)  # <- 실수형

print(arr)                # [0. 1. 2. 3. 4.]
print(arr.dtype)          # 'float64'
print(arr.astype(int))    # [0 1 2 3 4]  <- 정수형
dtype 설명 다양한 표현
int 정수형 타입 i, int_, int32, int64, i8
float 실수형 타입 f, float_, float32, float64, f8
str 문자열 타입 str, U, U32
bool 부울 타입 ?, bool_

int32, int64에서 32와 64는 데이터를 저장할 수 있는 용량 (bit)를 의미. 그래서 int32보단 int64가 더 큼. int64는 i8이라고도 씀. float도 마찬가지. str 문자열 타입은 유니코드라고 해서 대문자 U로도 쓰고, 데이터 용량을 같이 쓴 U32라고도 씀. bool의 경우 참과 거짓을 판단하는데, ?라는 단일문자로 쓸 수도 있고, bool_ 이렇게도 쓸 수 있음.

 

 

ndarray 배열의 속성

ndarray에는 배열의 여러 정보를 나타내는 속성값을 담고 있는데. ndim, shape, size, dtype 등이 있음.

 

ndarray의 차원 관련 속성

  • arr.ndim : 몇 차원인지를 구하는 함수.
  • arr.shape : 말 그대로 배열의 모양에 대한 함수.
# 1차원 배열

list = [0, 1, 2, 3]
arr = np.array(list)

print(arr.ndim)     # 1
print(arr.shape)    # (4,)  | 4개의 행이 1개의 열로 존재


# 2차원 배열

list = [[0, 1, 2], [3, 4, 5]]
arr = np.array(list)

print(arr.ndim)     # 2 
print(arr.shape)    # (2, 3) | 2개의 행이 3개의 열로 존재

 

ndarray의 크기속성과 shape 조절

  • arr.size : 배열 안에 들어가는 요소의 개수가 몇 개인지 구하는 함수.
  • len(arr) : 배열 길이(행) 구하는 함수
# 크기속성

arr = np.array([0, 1, 2, 3, 4, 5])

print("arr.shape : {}".format(arr.shape))
# arr.shape : (6,)

print("배열 요소의 수 : {}".format(arr.size))
# 배열 요소의 수 : 6

print("배열의 길이 : {}".format(len(arr)))
# 배열의 길이 : 1
# shape 조절

arr.shape(3, 2)

print("arr.shape : {}".format(arr.shape))
# arr.shape : (3, 2)

print("배열 요소의 수 : {}".format(arr.size))
# 배열 요소의 수 : 6

print("배열의 길이 : {}".format(len(arr)))
# 배열의 길이 : 3

 

 

연습문제

import numpy as np

print("2차원 array")
#1부터 15까지 들어있는 (3,5)짜리 배열을 만듭니다.
matrix = np.array(range(1,16))
matrix.shape = 3,5
print(matrix)


# 1. matrix의 자료형을 출력해보세요.
print(type(matrix))
# 2차원 array
# [[ 1  2  3  4  5]
#  [ 6  7  8  9 10]
#  [11 12 13 14 15]]
# <class 'numpy.ndarray'>

# 2. matrix의 차원을 출력해보세요.
print(matrix.ndim)     # 2

# 3. matrix의 모양을 출력해보세요.
print(matrix.shape)    # (3, 5)

# 4. matrix의 크기를 출력해보세요.
print(matrix.size)     # (15)

# 5. matrix의 dtype(data type)을 출력해보세요.
print(matrix.dtype)    # int64

# 6. matrix의 dtype을 str로 변경하여 출력해보세요.
print(matrix.astype("str"))
# [['1' '2' '3' '4' '5']
#  ['6' '7' '8' '9' '10']
#  ['11' '12' '13' '14' '15']]

# 7. matrix의 (2,3) 인덱스의 요소를 출력해보세요.
print(matrix[2,3])     # 14

# 8. matrix의 행은 인덱스 0부터 인덱스 1까지, 열은 인덱스 1부터 인덱스 3까지 출력해보세요.
print(matrix[0:2,1:4])
# [[2 3 4]
#  [7 8 9]]

 

 

728x90
반응형
댓글