
Numbering Python
import numpy as np # numpy np로 약칭을 주어 호출
# np.array(list 형식의 데이터)
arr = np.array([10,20,30])
print(arr)
# 2차원 배열
np.array(2차원 리스트)
arr2 = np.array([[10,20,30],[40,50,60]])
# 고성능 과학 계산
# 배열의 연산 vs 리스트의 연산
list1 = [1,2,3,4,5]
list2 = [10,20,30,40,50]
print(list1 + list2)
#[1,2,3,4,5,10,20,30,40,50]
arr1 = np.array(list1)
arr2 = np.array(list2)
print(arr1 + arr2)
[11 22 33 44 55]
# .shapae
print(arr1. shape) #1차원
print(arr3.shape) #2처ㅏ원
print(f'행 {arr3.shape[0]}, 열 : {arr3.shape[1]}')
#
(5,)
(2, 3)
행 2, 열 : 3
# .ndim
print(arr1.ndim)
print(arr3.ndim)
#
1
2
# .size
print(arr1.size)
print(arr3.size)
# 5
6
# .dtype
print(arr1.dtype)
print(arr3.dtype)
#int32
# .araange()
## // arange를 안했을때
list1 = []
for i in range(1,51):
list1.append(i)
arr4 - np.array(list1)
arr4
## arange() 사용
#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])
# 차원수를 바꾸는 역할
# .reshape()
print(arr5.shape)
//(50,)
# 2차원데이터로 변경
arr5 = arr5.reshape(5,10)
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]])
arr6 = np.array([10,20,30,40,50,])
arr6
# 인덱싱 [인덱싱 번호]
print(arr6[0])
# 슬라이싱[:]
# 0으로 시작하면 생략,마지막 숫자는 포함 X 마지막 숫자가 데이터의 끝인 경우 생략 O
print(
# 2차원 데이터 인덱싱/ 슬라이싱
arr7 = np.arange(1,51).reshape(5,10)
arr7
//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]])
1~50까지 5행 10열로 배치
print(arr7[0])
//[ 1 2 3 4 5 6 7 8 9 10]
print(arr7[0][4]) == print(arr7[0,4]) # 둘다 0행 4열 값을 뽑을 수 있다
//5
print(arr7[1:4))
//[[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]]
# #, 를 기준으로 행과 열을 나누기
print(arr7[1:4,1:4])
//[[12 13 14]
[22 23 24]
[32 33 34]]
print(arr7[:3,2:])
//[[ 3 4 5 6 7 8 9 10]
[13 14 15 16 17 18 19 20]
[23 24 25 26 27 28 29 30]]
print(arr7[1:3,6:8])
//[[17 18]
[27 28]]
arr8 = np.array([10,20,30,40,50,])
# 동시에 여러 숫자 접근 - 대괄호를 한번 더 감싸준다
print(arr8[[1,3]])
20, 40 # 8배열에 1번째와 3번째 데이터
# 인덱싱 + 슬라이싱 동시
print(arr7[1, 2:5])
// [13 14 15]
print(arr7[[0,3], 4:7])
// 0행과 3행 중에 4열부터 6열까지 출력
[[ 5 6 7]
[35 36 37]]
[:,: :step숫자]
print(arr7[:,: :step숫자
print(arr7[:,::3])
//[[ 1 4 7 10]
[11 14 17 20]
[21 24 27 30]
[31 34 37 40]
[41 44 47 50]]
print(arr7[:,::4])
[[ 1 5 9]
[11 15 19]
[21 25 29]
[31 35 39]
[41 45 49]]
.append(배열, 데이터)
arr9 = np.array([1,2,3,4,5])
print(arr9)
arr9 = np.append(arr9, 20)
//[ 1 2 3 4 5 20]
arr9[0] = 10
print(arr9)
//[10 2 3 4 5 20]
arr10 = np.array([97,54,75,53,69,4,8,52,41,2])
# 비교 연산자를 통한 불리언 인덱싱
arr10 > 80
//array([ True, False, False, False, False, False, False, False, False,
False])
arr10[arr10>50]
// array([97, 54, 75, 53, 69, 52]) #True 인 값만 출력
# 랜덤 값 고정 - seed()
np.random.seed(1)
arr11 = np.random.randint(1,10, size = (2,2))
# 1부터 10까지 2행 2열 배열로 랜덤값 삽입
print(arr11)
# 안에 데이터 전부 더하기
print(arr11.sum())
print(np.sum(arr11))
# 평균값 - mean()
print(arr11.mean())
print(np.mean(arr11))
# 제곱 : square()
print(np.square(arr11)) // print(arr11.square())는 안됨
# 제곱근 : square root > sqrt
print(np.sqrt(arr11))
음수가 아닌 실수로 만듦
arr12 = np.array([-1,-2,-3,-4,-5])
print(np.abs(arr12))
#유일값 확인하는 함수
arr13 = np.unique([1,2,2,4,4,2,3,4])
print(np.unique(arr13))
# 유일 값 구하는 동시에 해당 값이 몇개 있는지 알려주는 매개변수
print(np.unique(arr13, return_counts = True))
print(arr13)
np.where(arr13<2)
# np.where(조건식, True인경우, False인 경우)
np.where(arr13 <2, 1,2)
# 불리언 인덱싱을 활용한 where함수
arr13[np.where(arr13>2)]