Numpy 라이브러리 (1)
행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리하기 위해 지원하는 파이썬 라이브러리
데이터 구조 외에도 수치 계산을 위해 효율적으로 구현된 기능을 제공
1. 리스트를 배열로 바꾸기
import numpy as np
A=[1,2,3,4,5]
new_A=np.array(A)
#A의 타입은 리스트, new_A의 타입은 numpy.ndarray이다.
#A 출력 형태 -> [1, 2, 3, 4, 5]
#new_A 출력 형태 -> [1 2 3 4 5]
리스트를 배열(array)로 바꾸기 위해서는 np.array(리스트명) 로 코드를 작성하면 된다
2. 간단한 배열 만들기
num = np.array(range(0, 10))
- 0~9까지의 수를 num 이라는 배열(array)로 정의
-즉, array() 함수 내부의 매개 변수로 range 메소드가 들어갈 수 있다.
ones = np.ones([2,4], dtype="int32")
-배열이 2*4의 형태이고, 모든 원소가 1인 ones라는 배열 정의하는 함수
-즉 첫 번째 매개 변수는 배열의 형태, 두 번째 매개 변수는 배열 요소의 타입을 명시한다
-배열 요소는 모두 1로 채워진다
zeros = np.zeros([2,2,2], dtype="int8")
-배열이 2*2*2의 형태이고, 모든 원소가 0인 zeros라는 배열을 정의하는 함수
-첫 번째 매개변수는 똑같이 배열의 형태, 두 번째 매개면수는 배열 요소의 타입을 명시한다.
-배열 요소는 모두 0으로 채워진다
eyes = np.eye(3, dtype="int32")
-3*3 의 단위 행렬을 생성
-[1,0,0],[0,1,0],[0,0,1]의 단위 행렬을 생성한다.
eyes1 = np.eye(3, 5, k=1)
-3*5의 행렬을 만들고, 두 번째 주대각 원소가 1인 행렬을 생성한다
-실행 결과는 다음과 같다
3. 배열 형태 조정하기(reshape)
B=[1,3,5,6,8,10,13,16]
array_B=np.array(B)
reshape_B=array_B.reshape(2,4)
-기존에 있던 array를 사용자가 원하는 배열의 형태로 바꾸고 싶을 때 reshape를 사용하면 된다
-위의 예시에서는 1*8 의 배열을 2*4의의 배열로 새롭게 정의하였다.
4. array 기초 연산
l_exam=[1,2,3]
1_exam1=[4,5,6]
print(l_exam+l_exam1)
# 리스트끼리 더하면 리스트가 병합이 되는 결과가 나옴
# 결과 : [1,2,3,4,5,6]
np_exam = np.array(l_exam)
np_exam1 = np.array(l_exam1)
print(np_exam+np_exam1)
#array끼리 더하면 각 원소별로 수치가 더해짐
#결과 : [5,7,9]
print(np_exam-np_exam1)
#빼기 연산도 가능하다
#결과 : [-3 -3 -3]
-리스트끼리 +연산을 취하면 각 리스트들끼리 병합이 된다
-하지만 array의 경우 +나 - 연산을 취하면 같은 위치에 있는 원소끼리 더하거나 빼는 작업이 진행되는 것을 알 수 있다
a=np.array([1,2,3,4])
new_a = a**3
#결과 : [1 8 27 64]
sin_a=10*np.sin(a)
#결과 : [8.41470 9.0929 1.4112 -7.5680]
check = (a<2) | (a>=3)
#결과 : [True False True True]
check1 = (a<2) & (a<3)
#결과 : [True False False False]
-**연산은 제곱을 계산하는 것이다
-sin함수는 numpy의 universal function 중 하나인데, 이는 삼각함수 사인 값 sin을 반환한다.
-마지막 두 줄은 데이터 클리닝(Data Cleaning)기술에 활용되는데, 어떤 배열에 대해서 특정 조건을 만족하는지 확인하는 데에 사용이 된다.
A= np.array([[1,1][0,1]])
B= np.array([[2,0][3,4]])
A*B
#결과 : [[2 0][0 4]]
A@B
#결과 : [[5 4][3 4]]
A.dot(B)
#결과 : [[5 4][3 4]]
-* 연산자는 elementwise product를 진행할 때 활용하는 연산자이다
-이는 동일한 위치의 원소들끼리 곱한 것을 반환하는 연산이다
-또 @ 연산자와 dot 메소드는 우리가 알고 있는matrix끼리 곱하는 연산이라고 생각하면 된다
5. 행렬 전환
Mat = [[1,2,3],[4,5,6],[7,8,9]]
Mat = np.array(Mat)
trans_Mat = Mat.T
#trans_Mat 결과 : [[1 4 7][2 5 8][3 6 9]]
-특정 행렬에 대한 전치 행렬을 구하는 코드이다 (transpose matrix)