문제
배열 'arr' (numpy.ndarray) 에서 근접한 값의 간격이 5 보다 작은 경우를 삭제하려고 한다.
파이썬 코드 1
import numpy as np
arr = np.array([ 1, 8, 9, 10, 12, 24, 26, 35, 39, 43, 49, 59, 60,
69, 77, 80, 86, 90, 101, 112, 118, 119, 126, 133, 145, 146,
161, 172, 177, 181, 191, 193, 200, 206, 207, 210, 211, 212, 215,
219, 225, 232, 234, 239, 244, 250])
idxD = np.where(np.diff(arr) < 5)[0]
arrRevised = np.delete(arr, idxD)
결과
arr
array([ 1, 8, 9, 10, 12, 24, 26, 35, 39, 43, 49, 59, 60,
69, 77, 80, 86, 90, 101, 112, 118, 119, 126, 133, 145, 146,
161, 172, 177, 181, 191, 193, 200, 206, 207, 210, 211, 212, 215,
219, 225, 232, 234, 239, 244, 250], dtype=int32)
idxD
array([ 1, 2, 3, 5, 7, 8, 11, 14, 16, 20, 24, 28, 30, 33, 34, 35, 36,
37, 38, 41], dtype=int32)
arrRevised
array([ 1, 12, 26, 43, 49, 60, 69, 80, 90, 101, 112, 119, 126,
133, 146, 161, 172, 181, 193, 200, 219, 225, 234, 239, 244, 250],
dtype=int32)
파이썬 코드 2
import numpy as np
arr = np.array([ 1, 8, 9, 10, 12, 24, 26, 35, 39, 43, 49, 59, 60,
69, 77, 80, 86, 90, 101, 112, 118, 119, 126, 133, 145, 146,
161, 172, 177, 181, 191, 193, 200, 206, 207, 210, 211, 212, 215,
219, 225, 232, 234, 239, 244, 250])
for D in range(2, 6):
idxD = np.where(np.diff(arr) < D)[0]
print(f'D = {D}: idxD = {idxD}')
arr = np.delete(arr, idxD)
print(f'arr = {arr}')
arrRevised = arr
결과:
arr
array([ 1, 8, 9, 10, 12, 24, 26, 35, 39, 43, 49, 59, 60,
69, 77, 80, 86, 90, 101, 112, 118, 119, 126, 133, 145, 146,
161, 172, 177, 181, 191, 193, 200, 206, 207, 210, 211, 212, 215,
219, 225, 232, 234, 239, 244, 250], dtype=int32)
D = 2: idxD = [ 1 2 11 20 24 33 35 36]
arr = [ 1 10 12 24 26 35 39 43 49 60 69 77 80 86 90 101 112 119
126 133 146 161 172 177 181 191 193 200 207 212 215 219 225 232 234 239
244 250]
D = 3: idxD = [ 1 3 25 33]
arr = [ 1 12 26 35 39 43 49 60 69 77 80 86 90 101 112 119 126 133
146 161 172 177 181 193 200 207 212 215 219 225 234 239 244 250]
D = 4: idxD = [ 9 26]
arr = [ 1 12 26 35 39 43 49 60 69 80 86 90 101 112 119 126 133 146
161 172 177 181 193 200 207 215 219 225 234 239 244 250]
D = 5: idxD = [ 3 4 10 20 25]
arr = [ 1 12 26 43 49 60 69 80 90 101 112 119 126 133 146 161 172 181
193 200 207 219 225 234 239 244 250]
arrRevised
array([ 1, 12, 26, 43, 49, 60, 69, 80, 90, 101, 112, 119, 126,
133, 146, 161, 172, 181, 193, 200, 207, 219, 225, 234, 239, 244,
250], dtype=int32)
'Pythonian' 카테고리의 다른 글
한글 romanization (0) | 2022.10.03 |
---|---|
다양한 날짜 포멧 문자열을 날짜 datetime 포멧으로 변환하기 (0) | 2022.05.20 |
그림 창은 열리는데 그림이 안보인다 (0) | 2022.01.06 |
엑셀파일 읽기 방법 (0) | 2021.12.31 |
파이썬 리스트 곱하기 대 넘파이 배열 곱하기 (0) | 2021.12.26 |
댓글