Python - NumPy 기초 (3)
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]]])
- 차원 연관 함수
차수
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)
댓글남기기