전공공부/인공지능
Numpy 3편
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]