코딩하는 해맑은 거북이
[Numpy] comparisons, boolean&fancy index, numpy data i/o 본문
본 게시물의 내용은 'Numpy(부스트캠프 AI Tech)' 강의를 듣고 작성하였다.
comparisons
- All & Any : Array의 데이터 전부(and) 또는 일부(or)가 조건에 만족 여부 반환
a = np.arange(10)
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a < 4
array([ True, True, True, True, False, False, False, False, False, False])
np.all(a > 5), np.all(a < 10) # 모두가 조건에 만족한다면 True
(False, True)
np.any(a > 5), np.any(a < 0) # 하나라도 조건에 만족한다면 True
(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])
test_a == test_b
array([False, False, False])
(test_a > test_b).any()
True
* np.logical_and(), np.logical_not(), np.logical_or()
a = np.array([1, 3, 0], float)
np.logical_and(a > 0, a < 3
array([ True, False, False])
b = np.array([True, False, True], bool)
np.logical_not(b)
array([False, True, False])
c = np.array([False, True, False], bool)
np.logical_or(b, c)
array([ True, True, True])
- np.where : 조건에 따라 True, False로 설정된 값을 반환하거나 조건에 맞는 index 값 반환
np.where(a > 0, 3, 2) # where(condition, TRUE, FALSE)
array([3, 3, 2])
a = np.arange(10)
np.where(a > 5) # index 값 반환
(array([6, 7, 8, 9]),)
- np.isnan() : nan(not a number) 인지 판별하는 함수, 맞으면 True, 아니면 False 반환
a = np.array([1, np.NaN, np.Inf], float)
np.isnan(a)
array([False, True, False])
- np.isfinite() : 유한(finite) 값인지 판별하는 함수, 맞으면 True, 아니면 False 반환
a = np.array([1, np.NaN, np.Inf], float)
np.isfinite(a)
array([ True, False, False])
- argmax & argmin : array 내 최대값 또는 최소값의 index 반환
a = np.array([1, 2, 4, 5, 8, 78, 23, 3])
a.argsort() # 오름차순 index 정렬 / 0번째 값이 가장 작은 값의 index
array([0, 1, 7, 2, 3, 4, 6, 5])
a.argsort()[::-1] # 내림차순 index 정렬 / 0번째 값이 가장 큰 값의 index
array([5, 6, 4, 3, 2, 7, 1, 0])
np.argmax(a), np.argmin(a)
(5, 0)
* axis 기반의 반환
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 & fancy index
- boolean index : 특정 조건에 따른 값을 배열 형태로 추출 (Comparison operation 함수들도 모두 사용가능)
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])
test_array[test_array > 3] # 조건이 True인 index의 element만 추출
array([4., 8., 9., 7.])
condition = test_array < 3
test_array[condition]
array([1., 0., 2.])
- fancy index : numpy는 array를 index value로 사용해서 값 추출, matrix 형태의 데이터도 가능
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의 값들을 추출함
array([2., 2., 4., 8., 6., 4.])
a.take(b) # take 함수 : bracket index와 같은 효과
array([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.])
numpy data i/o
- loadtxt & savetxt : text type의 데이터를 읽고, 저장하는 기능
a = np.loadtxt('파일명') # 파일 호출
a_int = a.astype(int) # Int type 변환
np.savetxt('int_data.csv', a_int, delimiter=",") # int_data.csv로 저장
* numpy object - npy
a = np.arange(10, dtype=int)
np.save("npy_test_object", arr=a) # pickle 형태로 저장
a_test = np.load(file="npy_test_object.npy")
a_test
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
'Python > Numpy | Pandas' 카테고리의 다른 글
[Pandas] Pandas 기본 문법 (0) | 2023.03.16 |
---|---|
[Numpy] array를 list로 변환 (0) | 2023.01.02 |
[Numpy] shape, creation, operation 관련 함수 (0) | 2022.12.27 |
[Numpy] Numpy란, Numpy 특징, ndarray (0) | 2022.12.27 |
[Numpy] Numpy 배열 생성 방법 (0) | 2021.01.07 |