Python - NumPy 기초 (3)

2 분 소요

6. 논리 연산

각 요소끼리 연산하여 bool 결과들을 배열로 반환

a=np.array([1,2,3,4])
b=np.array([4,2,2,4])
a==b
array([False,  True, False,  True])

 

a>=b
array([False,  True,  True,  True])

 

np.all(a==b)  #모든 요소가 조건을 만족해야 True, 아니면 False
False

 

sum(a<3)  #조건을 만족하는 요소의 개수
2

 

a<3
array([ True,  True, False, False])

*np.logical_and():and 연산함수

*np.logical_or():or 연산 함수

np.logical_and(True, False)  #True and False = False
False

 

np.logical_and([True, False],[True, False])  # 같은 위치 조건 둘다 True 여야만 True
array([ True, False])

 

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

 

np.logical_and(a>1, a<4)
array([False, False,  True,  True, False])

 

np.logical_or(True, False)
True

 

np.logical_or([True, False],[False, False])  #같은 위치 조건 둘 중 하나만 True 여도 True
array([ True, False])

 

np.logical_or(a<1, a>3)
array([ True, False, False, False,  True])

*np.where(조건, 참일때실행, 거짓일때실행)

a = np.arange(10)
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

 

np.where(a<5, a, a*10)  #a가 5보다 작을 때, 조건을 만족하면 a 그대로 쓰고, 조건을 만족하지 않으면 a*10 사용
array([ 0,  1,  2,  3,  4, 50, 60, 70, 80, 90])

 

a = np.array([[0,1,2],[0,2,4],[0,3,6]])
a
array([[0, 1, 2],
       [0, 2, 4],
       [0, 3, 6]])

 

np.where(a<4, a, -1)
array([[ 0,  1,  2],
       [ 0,  2, -1],
       [ 0,  3, -1]])

 

a=np.array([1,2,3,4,5])
b=np.array([11,12,13,14,15])
np.where([True, False, True, True, False], a, b)
array([ 1, 12,  3,  4, 15])

 

np.where([[True,False],[True, True]],[[1,2],[3,4]],[[5,6],[7,8]]) #배열에서 같은 위치에 있는 값을 조건에 따라 사용
array([[1, 6],
       [3, 4]])

7. 차원 변경

*np.reshape(행,렬)

a=np.arange(12)
a 
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

 

b = a.reshape(3,4)
b
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

*np.ravel(), np.flatten() => 배열을 1차원으로 변경

b.ravel()
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

 

b
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

 

b.flatten()
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

*np.newaxis => 요소를 새 축으로 만듬

c = a[:, np.newaxis]
c
array([[ 0],
       [ 1],
       [ 2],
       [ 3],
       [ 4],
       [ 5],
       [ 6],
       [ 7],
       [ 8],
       [ 9],
       [10],
       [11]])

 

c = b[:, np.newaxis]
c
array([[[ 0,  1,  2,  3]],

       [[ 4,  5,  6,  7]],

       [[ 8,  9, 10, 11]]])
  1. 차원 연관 함수

차수
axis=0 => x축 . 열별리 연산 axis=1 => y축 . 행별로 연산 axis=2 => z축 axis=-1 => 마지막 축(2차원:y축, 3차원:z축)

a = np.array([[1,2,3],[4,5,6]])
a
array([[1, 2, 3],
       [4, 5, 6]])

 

a.sum()#모든 요소의 합
21

 

a.sum(axis=0)#열별로 합
array([5, 7, 9])

 

a.sum(axis=1)#행별로 합
array([ 6, 15])

 

a.max()#a배열 모든 요소에서 최대값
6

 

a.max(axis=0)#열별로 최대값
array([4, 5, 6])

 

a.max(axis=1)#행별로 최대값
array([3, 6])

*argmax() / argmin() => 최대, 최소 값의 위치 반환

a.argmax()
5

 

a.argmax(axis=0)
array([1, 1, 1], dtype=int64)

 

a.argmax(axis=1)
array([2, 2], dtype=int64)

댓글남기기