prefer_all 2022. 7. 19. 13:31

출처: 네이버 부스트코스 인공지능(AI) 기초 다지기 3. 기초 수학 첫걸음

1. Comparisons
- all, any
- np.where
- argmax, argmin
 

2. Boolean Index
3. Fancy Index
4. numpy data i/o
- loadtxt &, savetxt
- npy

 

  • Comparisons

all(모두가 만족한다면), any(하나라도 만족한다면)

array의 데이터 전부 또는 일부가 조건에 만족하는 지 여부를 반환

a = np.arange(10)
np.any(a>5), np.any(a<0) #(True, False)

 

  • Numpy는 배열의 크기가 동일 할 때 element간 비교의 결과를 Boolean type으로 반환하여 돌려줌
test_a = np.array([1, 3, 0], float)
test_b = np.array([5, 2, 1], float)
test_a > test_b #array([False,  True, False], dtype=bool)

 

logical_and, logical_not, logical_or

a = np.array([1, 3, 0], float)
np.logical_and(a > 0, a < 3) # and 조건의 condition
#array([ True, False, False], dtype=bool)

b = np.array([True, False, True], bool)
np.logical_not(b) # NOT 조건의 condition
#array([False,  True, False], dtype=bool)

c = np.array([False, True, False], bool)
np.logical_or(b, c) # OR 조건의 condition
#array([ True,  True,  True], dtype=bool)

 

np.where(condition, true, false)

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

 

np.isnan( ) -> not a number(ex. np.NaN, np.Inf)이면 true, number이면 false

np.isfinite() -> finite number이면 true, infinite number이면 false

 

 

agrmax, argmin

array 내 최대값 또는 최소값의 index를 반환함

a = np.array([1,2,4,5,8,78,23,3])
np.argmax(a) , np.argmin(a)
#(5, 0)

a=np.array([[1,2,4,7],[9,88,6,45],[9,76,3,4]])
np.argmax(a, axis=1) , np.argmin(a, axis=0)
#(array([3, 1, 1]), array([0, 0, 2, 2]))


  • Boolean Index

numpy는 배열은 특정 조건에 따른 값을 배열 형태로 추출 할 수 있음

test_array = np.array([1, 4, 0, 2, 3, 8, 9, 7], float)
test_array > 3 
#array([False,  True, False, False, False,  True,  True,  True], dtype=bool)

test_array[test_array > 3]
#array([ 4.,  8.,  9.,  7.])

  • Fancy Index

numpy는 array를 index value로 사용해서 값을 추출하는 방법

a = np.array([2,4,6,8], float)
b = np.array([0,0,1,3,2,1], int) #반드시 integer로 선언
a[b] #bracket index, b 배열의 값을 index로 하여 a값들을 추출함
a.take(b) 
#array([2., 2., 4., 8., 6., 4.])
#0은 2, 1은 4, 2는 6, 3은 8인데 0,0,1,3,2,1을 추출하고 있으므로 2,2,4,8,6,4

 

a = np.array([[1, 4], [9, 16]], float)
b = np.array([0, 0, 1, 1, 0], int)
c = np.array([0, 1, 1, 1, 1], int)
a[b,c] # b를 row index, c를 column index로 변환하여 표시함
#array([  1.,   4.,  16.,  16.,   4.])
1(0,0) 4(0,1)
9(1,0) 16(1,1)

  • numpy data i/o

loadtxt, savetxt

astype(type명) 타입이 바뀜

a = np.loadtxt("./populations.txt")
a_int = a.astype(int)
a_int[:3]
np.savetxt('int_data.csv',a_int, delimiter=",")

 

npy

numpy object(pickle) 형태로 데이터를 저장하고 불러옴

binary 파일 형태로 저장함

np.save("npy_test", arr=a_int)
npy_array = np.load(file="npy_test.npy")
npy_array[:3]