1차원 곡선의 최소값과 최대값 위치를 찾아주는 예제입니다. scipy에서 제공하는 argrelmin, argrelmax를 사용하여 구현했는데 정확한 위치를 잡아주지는 않습니다. 실행 속도도 빠른 편이 아니네요. 2021. 12. 1 최초작성 import numpy as np from scipy.signal import argrelmin, argrelmax from matplotlib import pyplot as plt x = np.linspace(0, 20, 20) y = np.cos(x) local_min_xx = argrelmin(y)[0] local_min_yy = np.array(y[local_min_xx]) local_max_xx = argrelmax(y)[0] local_max_yy = np..
두 곡선의 교차점에 대응하는 x, y좌표를 구할 수 있는 Python 예제 코드입니다. 2021. 11. 30 - 최초작성 실행 결과입니다. 두 곡선의 교점을 초록색 점으로 표시해주고 있습니다. 터미널에서 교차점의 x,y 좌표를 확인할 수 있습니다. [(1.2831976623728205, -0.283620905396323), (4.425039547130342, 0.2818828030413486), (7.566358178278255, -0.281334885867327)] 전체 소스 코드입니다. # -*- coding: utf-8 -*- # 원본 코드 - https://stackoverflow.com/a/59120343 import numpy as np from matplotlib import pyplot ..
generator를 사용하여 넘파이 배열을 일정한 크기씩 나누어 가져오는 것을 작성한 테스트 코드입니다. 더 간단한 방법이 있을 거 같았는데 마땅히 떠오르지 않습니다. 2021. 11. 28 최초작성 import numpy as np a = np.arange(13) print(a) print() def generator(arr, n): for i in range(n, len(arr) +1, n): d = arr[i-n:i] yield d for i,d in enumerate(generator(a, 2)): print(i, d) 실행 결과 [ 0 1 2 3 4 5 6 7 8 9 10 11 12] 0 [0 1] 1 [2 3] 2 [4 5] 3 [6 7] 4 [8 9] 5 [10 11]
Python에서 JSON 포맷 파일을 로드하는 방법입니다. 2021. 11. 14 최초작성 test.json 이름으로 파일을 작성합니다. {"name":"Lee","messages":["msg 1","msg 2","msg 3"],"country":"korea"} 다음 파이썬 코드를 사용하여 json 파일을 로드할 수 있습니다. import json f = open('test.json') json_file = json.load(f) print(json_file) print(type(json_file)) # {'name': 'Lee', 'messages': ['msg 1', 'msg 2', 'msg 3'], 'country': 'korea'} # print(json.dumps(json_file)) print..
MATLAB의 mat 파일을 Python에서 불러오는 예제 코드입니다. 2021. 11. 14 최초작성 import scipy.io as sio arr = sio.loadmat('sample1.mat') print('arr') print(arr) print('\n\n') a = arr['a'] b = arr['b'] print('a') print(a) print('b') print(b) arr = sio.loadmat('sample1.mat') print('arr') print(arr) print('\n\n') loadmat으로 mat 파일을 로드하여 출력해보면 배열 ‘a’와 배열 ‘b’를 딕셔녀리에서 접근가능한걸 볼 수 있습니다. arr {'__header__': b'MATLAB 5.0 MAT-file..
Python에서 실수 출력 포맷을 지정하는 예제 코드입니다. 2021. 11. 10 - 최초작성 소수점 두번째 자리까지 출력하기 pi = 3.14159265359 print("{:.2f}".format(pi)) 소수점 두번째 자리까지 출력되었습니다. 3.14 5개의 문자 출력할 공간에 소수점 두번째 자리까지 실수 출력하기 pi = 3.14159265359 print("{:5.2f}".format(pi)) 소수점 포함해서 출력될 문자 개수가 4개라서(3.14) 앞에 빈 공백이 하나 추가되어 출력되었습니다. 3.14 다른 예제를 하나 더 살펴봅니다. 10개의 문자 출력할 공간에 소수점 다섯번째 자리까지 실수를 출력합니다. pi = 3.14159265359 print("{:10.5f}".format(pi)) ..
CSV 파일을 읽어 순서 유지한채 무작위 샘플링하여 2개의 CSV 파일로 저장하는 예제입니다. Pandas를 사용하여 구현하였습니다. 테스트에 사용한 CSV 파일입니다. 주의할점은 csv 파일에 필드를 설명하는 헤더가 꼭 있어야 합니다. 여기에선 typeA, typeB입니다. typeA, typeB AA1,BB1 AA2,BB2 AA3,BB3 AA4,BB4 AA5,BB5 AA6,BB6 AA7,BB7 AA8,BB8 AA9,BB9 AA10,BB10 AA11,BB11 AA12,BB12 AA13,BB13 AA14,BB14 AA15,BB15 AA16,BB16 AA17,BB17 AA18,BB18 AA19,BB19 AA20,BB20 AA21,BB21 AA22,BB22 AA23,BB23 AA24,BB24 AA25,BB2..
numpy 배열의 데이터를 원본 csv 파일에서 찾을 목적으로 만들었던 코드였는데 간단한 데이터로 예제코드를 만들어봤습니다. 2021. 9. 11 최초작성 import numpy as np a = np.linspace(0.01, 1.00, 9).reshape(3, 3) print('original') print(a) print() print('new') np.set_printoptions(suppress=True) print('\n'.join(','.join(str(format(cell,"0.3f")) for cell in row) for row in a)) original [[0.01 0.13375 0.2575 ] [0.38125 0.505 0.62875] [0.7525 0.87625 1. ]] new..
Python에서 C언어 스타일의 조건 처리 전처리문을 사용하는 방법을 다룹니다. 2021. 6. 9 최초작성 설치 pip3 install pypreprocessor 설치시 에러 나는 경우 해결 방법 ( https://hbesthee.tistory.com/1661 ) git가 설치되어있어야 합니다. pip3 install git+https://github.com/Epikem/pypreprocessor 현재 사용 가능한 문법 상수 정의 #define constant 상수 정의되어 있으면 블럭 내의 문을 처리 #ifdef constant #ifdef에서 체크한 상수가 정의되어 있지 않은 경우 블럭 내의 문을 처리 #else #ifdef 또는 #else에 해당되는 블럭 끝나는 지점에 추가해야 함. #endif ..
파이썬에서 코드 실행시간을 측정하는 방법을 찾아 테스트해보았습니다. 파이썬 3.3+ 이상부터 perf_counter와 process_time를 사용할 수 있는데 차이점은 다음과 같습니다. perf_counter는 sleep 함수를 호출하여 대기한 시간을 포함하여 측정합니다. process_time는 실제로 연산하는데 걸린 시간만 측정합니다. import time def process1(): start = time.perf_counter() time.sleep(1) return (time.perf_counter()-start) def process2(): start = time.process_time() time.sleep(1) return (time.process_time()-start) print('u..