pip install <라이브러리 이름>
import numpy as np
#리스트로 행렬 표현
a = [[1,0], [0,1]]
b = [[1,1], [1,1]]
a+b
👩💻결과
[[1, 0], [0, 1], [1, 1], [1, 1]]
#numpy matrix, 직관적임
a = np.array([[1,0], [0,1]])
b = np.array([[1,1], [1,1]])
a+b
👩💻결과
array([[2, 1],
[1, 2]])
a = np.array([1,2,3])
b = np.array([4,5,6])
#vector a,b 출력
print(a,b)
#vector a,b 형상출력 -> shape
print("a.shape=",a.shape, "b.shape=",b.shape)
#vector a,b 차원출력 -> ndim
print("a.ndim=",a.ndim,"b.ndim=",b.ndim)
👩💻결과
[1 2 3] [4 5 6]
a.shape= (3,) b.shape= (3,)
a.ndim= 1 b.ndim= 1
a = np.array([[1,2,3],[4,5,6]])
b = np.array([[-1,-2,-3],[-4,-5,-6]])
#matrix a,b 형상출력 -> shape
print("a.shape=",a.shape, "b.shape=",b.shape)
#matrix a,b 차원출력 -> ndim
print("a.ndim=",a.ndim,"b.ndim=",b.ndim)
👩💻결과
a.shape= (2, 3) b.shape= (2, 3)
a.ndim= 2 b.ndim= 2
c = np.array([1,2,3])
#vector c 형상출력 -> shape
print("c.shape=",c.shape)
#vector를 (1,3)행렬로 형변환
c = c.reshape(1,3)
#vector c 형상출력 -> shape
print("c.shape=",c.shape)
👩💻결과
c.shape= (3,)
c.shape= (1, 3)
a = np.array([[1,2,3],[4,5,6]]) #2*3
b = np.array([[-1,-2],[-3,-4],[-5,-6]]) #3*2
#(2*3) dot product(3*2) = (2*2)
c = np.dot(a,b) # 행렬 곱 수행
print("a=", a)
print("b=", b)
print("a.shape=",a.shape,"b.shape=",b.shape)
print("c.shape=",c.shape)
print("c=",c)
👩💻결과
a= [[1 2 3]
[4 5 6]]
b= [[-1 -2]
[-3 -4]
[-5 -6]]
a.shape= (2, 3) b.shape= (3, 2)
c.shape= (2, 2)
c= [[-22 -28]
[-49 -64]]
a = np.array([[1,2],[3,4]])
b = 5
a+b
👩💻결과
array([[6, 7],
[8, 9]])
c = np.array([[1,2],[3,4]])
d = np.array([4,5])
c+d
👩💻결과
array([[5, 7],
[7, 9]])
a = np.array([[1,2],[3,4],[5,6]]) #3*2
b= a.T #a의 전치행렬, 2*3
print("a.shape=",a.shape, "b.shape=",b.shape)
print("a=",a)
print("b=",b)
👩💻결과
a.shape= (3, 2) b.shape= (2, 3)
a= [[1 2]
[3 4]
[5 6]]
b= [[1 3 5]
[2 4 6]]
c = np.array([1,2,3,4,5]) #vector(matrix 아님)
d = c.T # c는 vector이므로 transpose 안됨
e = c.reshape(1,5) #1*5 matrix
f = e.T #e의 전치행렬
print("c.shape=",c.shape, "d.shape=",d.shape)
print("e.shape=",e.shape, "f.shape=",f.shape)
print("d=",d)
print("f=",f)
👩💻결과
c.shape= (5,) d.shape= (5,)
e.shape= (1, 5) f.shape= (5, 1)
d= [1 2 3 4 5]
f= [[1]
[2]
[3]
[4]
[5]]
iterable이란?
member를 하나씩 반환할 수 있는 object를 말합니다.
iterable의 예로는 sequence type인 list, str, tuple이 있습니다.
a = np.array([[10,20,30,40], [50,60,70,80]])
print("a =>",a,"\n")
print("a.shape =>",a.shape, "\n")
it = np.nditer(a, flags=['multi_index'], op_flags=['readwrite'])
#multi_index는 다중 인덱스 또는 반복 차원 당 하나의 인덱스 튜플이 추적되도록합니다.
#readwrite는 피연산자가 읽고 쓸 것임을 나타냅니다.
while not it.finished: #피연산자에 대한 반복이 완료되었는지 여부입니다.
idx = it.multi_index
print("idx =>", idx)
print("current value ->", a[idx])
it.iternext() #원소끝까지 이동할 수 있다.
👩💻결과
a => [[10 20 30 40]
[50 60 70 80]]
a.shape => (2, 4)
idx => (0, 0)
current value -> 10
idx => (0, 1)
current value -> 20
idx => (0, 2)
current value -> 30
idx => (0, 3)
current value -> 40
idx => (1, 0)
current value -> 50
idx => (1, 1)
current value -> 60
idx => (1, 2)
current value -> 70
idx => (1, 3)
current value -> 80
a = np.array([[10,20,30], [40,50,60]])
print(a.shape)
# a matrix에 행 추가할 행렬, 1행 3열로 reshape
# 행을 추가하기 때문에 우선 열을 3열로 만들어야 함
row_add = np.array([70,80,90]).reshape(1,3) #vector -> matrix
#a matrix에 열 추가할 행렬, 2행 1열로 생성
#열을 추가하기 때문에 우선 행을 2행으로 만들어야 함.
column_add = np.array([1000,2000]).reshape(2,1)
#numpy.concatenate 에서 axis = 0 행(row) 기준
#a 행렬에 row_add 행렬 추가
b = np.concatenate((a, row_add), axis=0)
print(b)
#numpy.concatenate 에서 axis = 1 열(column) 기준
#b 행렬에 column_add 행렬 추가
c = np.concatenate((a, column_add),axis=1)
print(c)
👩💻결과
(2, 3)
[[10 20 30]
[40 50 60]
[70 80 90]]
[[ 10 20 30 1000]
[ 40 50 60 2000]]
np.loadtxt('경로', delimiter=',', dtype=np.float32)