#numpy import
import numpy as np
# ModuleNotFoundError 가 발생할수 있다
# -> 모듈을 찾을 수 없다라는 에러 > 모듈을 설치해라 (라이브러리 설치)
# !pip install numpy > 넘파이 설치코드
# !pip install numpy==3.X.X 특정 버전 설치
# Numpy 설치시 체크하면 좋은 사항
print(np.__version__)

# 1차원 데이터 arr1 정보 출력해보기
print('arr 크기: ', arr1.shape)
print('arr 데이터 갯수: ', arr1.size)
print('arr 차원수: ', arr1.ndim)
print('arr 데이터 타입: ', arr1.dtype)
#
arr 크기: (5,)
arr 데이터 갯수: 5
arr 차원수: 1
arr 데이터 타입: int32
# 2차원 데이터 arr2 정보 출력해보기
print('arr 크기: ', arr2.shape)
print('arr 데이터 갯수: ', arr2.size)
print('arr 차원수: ', arr2.ndim)
print('arr 데이터 타입: ', arr2.dtype)
#
arr 크기: (2, 5)
arr 데이터 갯수: 10
arr 차원수: 2
arr 데이터 타입: int32
# 1~5까지 담은 리스트를 생성
list1 = [1,2,3,4,5]
# 넘파이 배열로 변환
arr1 = np.array(list1)
# 출력
arr1
# arr1, list1 비교
# list1 + 1 # 에러 발생
arr1 +1 # 배열과 단일 숫자의 연산이 적용된다 (모든 위치에 +1)
arr1
# 만약 리스트에 모든 숫자를 1씩 더해주고 싶다면
# 1. list1 + [1,1,1,1,1] # 리스트간 병합 진행
# 2. for문 이용해서
list2 = []
for i in list1:
list2.append(i+1)
list2
list2 = [[1,2,3,4,5],
[6,7,8,9,10]]
arr2 = np.array(list2)
arr2**2
# 심화 학습 >> numpy 브로드캐스팅
# array([[ 1, 4, 9, 16, 25],
[ 36, 49, 64, 81, 100]])
# 1~50 까지 숫자 넣기
# 1번 방법
list3 = []
for i in range(1,51):
list3.append(i)
arr3 = np.array(list3)
arr3
# 2번 방법
list_ = list(range(1,51))
arr4 = np.array(list_)
arr4
# 3번 방법
# np.arange() -> 원하는 만큼 숫자를 생성해서 배열을 만들어주는 함수
arr5 = np.arange(1,51)
arr5
###
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50])
# arr3/arr4/arr5 차원 > 1차원
# 차원의 변화를 줘서 2차원 배열의 형태를 바꿈
# arr3.reshape(행의 갯수, 열의 갯수)
# 주의점 > 내부 요소의 갯수가 비어잇거나 넘치지 않도록 변경을 해줘야 한다
# 전체 요소 갯수의 약수를 넣어주는 것이 에러 발생을 막는 하나의 팁
rs_arr3 = arr3.reshape(5,10)
rs_arr3
#
array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
[21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
[31, 32, 33, 34, 35, 36, 37, 38, 39, 40],
[41, 42, 43, 44, 45, 46, 47, 48, 49, 50]])
앞에 대괄호 갯수 확인
np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
from matplotlib import pyplot as plt
x = [1,2,3,4,5]
y = [6,7,8,9,10]
plt.plot(x,y, marker = 'o') # 직선 그래프 그려주는
plt.grid() # 그래프에 격자무늬를 넣어줌
plt.show() # plt 그래프 보여주는 명령어

!pip install opencv-python
import cv2
from matplotlib import pyplot as plt
# matplotlib > 그래프/그림을 출력해주는 도구
# 1. 이미지 경로 지정하기
img_path = './data/po.jpg'
# 2. 이미지 읽어오기
img = cv2.imread(img_path, cv2.IMREAD_COLOR)
# cv2.imread(이미지의 경로/파일명.확장자, 이미지를 불러오는 방식): 이미지를 읽어 옮
# cv2.IMREAD_GRAYSCALE : 이미지를 흑백 이미지로 불러옮
# opencv 가 개발된 시점이 1998sus -> 이때 사용했던 색상 채널 순서 BGR
# matplotlib의 색상 채널 ->RGB
# opencv와 matplotlib 색상 채널을 맞춰주자
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 색상 채널을 변환해주는 함수
plt.xticks([]) # x축의 눈금값 제거
plt.yticks([]) # y축의 눈금값 제거
plt.imshow(img)
img.shape #(행(y축의 픽셀 갯수), 열(x축의 픽셀 갯수), 색상 채널 (R,G,B))
#
(300, 348, 3)
# 10 ~ 60까지 10씩 증가하는 배열 만들기
arr = np.arange(10, 61, 10)
#
array([10, 20, 30, 40, 50, 60])
-----------------
arr[[3,5]] # 40, 60값 가져오기 대괄호 2개 사용
# arr[5,3] # 2차원 배열에서 5행 3열 데이터를 가져오기