본문 바로가기

Software/Python

(77)
Jupyter Notebook에서 GUI 같은 느낌의 작업을 원하세요? ipywidgets Jupyter Notebook을 Python 유저들이 많이 사용하시죠? 그런데 아주 가끔 간단히 슬라이드바나 버튼 등을 이용한 GUI 환경을 간편하게 쓸 수 있다면 좀 더 재미있겠는데~ 하고 생각할 때가 있을 겁니다. 그럴때 사용하는 것이 ipywidgets입니다. 워난 Documents가 잘 되어 있어서 그냥 간단하게 소개만 해보겠습니다.매우 간단하게 저렇게 사용합니다.value를 조회하거나 강제로 값을 선언할 수 있습니다.Text 박스와 Slider인데요. 이 둘을 jslink로 엮어 버릴 수 있습니다.해제할 때는 unlink~이번에는 버튼이 눌러지면 어떤 기능을 실행하도록 준비해 줄 수 있습니다.버튼을 클릭하면 특정 기능을 수행하는 거죠~혹은 슬라이드바를 다수 연결해볼 수도 있구요~위 예제는 간단하..
Python에서 두 개 이상의 자료를 묶는 zip을 이용해서 LIST형을 DICT 형으로 변환하기 Python으로 데이터를 정리하다보면 두 개 이상의 list형 데이터를 각각 dict 형으로 묶고 싶을 때가 있습니다. 이럴때 사용하는 것이 zip입니다.이렇게 두 개의 list형 데이터가 있다고 하면zip으로 묶어서 튜플형으로 만들어 버릴 수 있습니다.^^그리고 dict형으로 변환하면 두 개의 리스트에서 각각의 위치의 데이터를 하나는 key, 하나는 value로 해서 dict형을 만들 수 있는거죠.한 번에 처리하면 이렇게 됩니다.~~~~이미 묶여있는 데이터는 unpacking 언패킹 인자라고 하는 * 를 이용해서 풀어 줄 수 있습니다.
numpy의 where 함수 사용법 머신러닝이나 딥러닝을 하다보면, numpy 모듈의 다양한 함수를 사용하게 되는 것 같습니다. 오늘은 그 중에서 은근 많이 사용되는 where 함수에 대해 이야기를 해보려고 합니다. 너무 쉽고 간단하면서 괜찮은 함수인 것 같습니다. 간단하게 numpy를 import하구요. 위 코드처럼 데이터를 numpy array로 선언해 두겠습니다. 뭐 min이나 max값을 찾거나, 그 값의 위치를 찾는 것은 argmin, argmax로 됩니다. where함수는 조건문을 사용할때입니다. 출력은 근본적으로는 인덱스입니다. a 배열에서 1보다 적은 것은 6, 7번 데이터라는 것이죠. 그걸 슬라이싱에 사용할 수 있습니다. 그러면 1보다 작은 값을 찾아서 그 값만 반환합니다. 혹은 이렇게, 10보다 크거나 같은 값을 찾아서, ..
Jupyter notebook 매직 커맨드로 모듈 버전, OS 정보 등을 출력하는 watermark 모듈 Jupyter notebook에서 % 기호로 시작하는 명령을 매직 커맨드라고 합니다. 폴더 경로, 목록 등을 확인하는 명령이 있는데요. 이번에는 매직 커맨드의 확장으로 설치된 모듈, import한 모듈의 버전 정보, 현재 OS의 버전 등을 출력해 주는 watermark라는 모듈을 소개하려고 합니다.간단하게, pip 명령으로 설치합니다.%load_ext watermark를 수행하고 나면 사용할 수 있습니다. 먼저 설명을 보면다양한 버전 관련 옵션들이 있습니다.그냥 실행하면, 파이썬의 버전, OS(전 맥이라서 Darwin) 버전, 시스템 상황이 나타납니다.그리고, 간단한 시간과 날짜, 혹은 최근 업데이트 날짜 등을 확인할 수 있습니다.또, 원하는 모듈의 버전을 확인하거나,import한 모듈 전체의 버전을 한..
파이썬에서의 복사 얕은 복사와 깊은 복사 파이썬은 참 쉬운 언어입니다. 그래서 여러 분야에서 인기를 끌고 있는 거겠죠^^. 그런데 이런 파이썬을 공부하다가 보면 의외의 곳에서 한 번쯤 막히게 됩니다. 바로, 복사(copy)입니다. 무슨 이야기일까요. >>> a = [1, 2, 3] >>> b = a >>> b[1] = 0 >>> b [1, 0, 3] >>> a [1, 0, 3] 위 상황이 혹시 눈에 들어 오시나요? a에 [1, 2, 3]을 저장하고, b에 a를 저장하고 난 후, 난 그냥 b의 두번째 숫자를 2에서 0으로 바꾸었는데, a도 따라 바뀌게 되는 기이한 현상입니다.^^ >>> id(a), id(b) (4431577288, 4431577288) 이유는 메모리상에서 고유한 id를 조회하는 id라는 명령으로 a, b 두 변수를 조회해보면 알..
Python에서 미분(차분)을 한다는 것. 데이터, 혹은 함수 어떤 형태든 센서 신호를 만지작 거리고, 모터를 구동하고, 뭐 그러다보면 미분(혹은 차분)을 수행해야할 경우가 생깁니다. 오늘은 파이썬으로 미분(차분)하는 일에 대해 이야기를 해보려고 합니다.^^ import numpy as np import matplotlib.pyplot as plt %matplotlib inline t = np.arange(0, 2*np.pi, 0.1) y1 = np.sin(t) plt.figure(figsize=(12,6)) plt.plot(t, y1); 일단, 시험 신호를 하나 만들어 두겠습니다. 시간축 t는 0부터 2pi까지 0.1 간격을 가지도록 했습니다.이렇게 생긴거죠^^ 먼저, 위 시험신호처럼 우리가 함수를 아는 경우에 대해 접근해 보겠습니다.바로 고등학교때 배운 도함수의..
파이썬(Python)에서 시리얼 통신으로 받은 데이터 실시간으로 그래프 그리기 저는 한 3년 전쯤에 Python에서 matplotlib에서 그래프에서 애니메이션 효과로 그래프를 그리는 이야기를 했습니다. 그리고, 마우스 대응등 인터략티브한 그래프 이야기를 추가로 했었네요. 그리고 아주 예전에 Python에서 시리얼 통신하는 법에 대한 이야기도 했었죠. 오늘은 시리얼 통신으로 연결된 데이터를 받아서 간편하게 실시간 그래프를 그리는 것에 대한 이야기를 하려고 합니다. 일단, 그 대상으로 아두이노 보드를 잡았습니다. 아두이노 보드는 그냥 PC와 연결만 시켜 두어서 사진으로 보여드리지는 않겠습니다.^^ void setup() { // put your setup code here, to run once: Serial.begin(115200); } void loop() { // put you..
Python에서 인터랙티브한 반응과 애니메이션 구현하기 예전에 python의 matplotlib를 이용해서 애니메이션을 구현하는 이야기를 간단히 해보았습니다. 이번에는 조금 더 재미있는 애니메이션 이야기를 해보고 싶네요.^^. 화면에 점 하나를 찍고, 마우스로 다른 곳을 클릭하면 그 점이 천천히 따라오게 하는 것이죠^^ 코드는 import matplotlib.pyplot as plt import numpy as np x_goal = 1 y_goal = 1 x = 1 y = 1 dt = 0.01 Kp = 7 def click(event): global x_goal, y_goal x_goal = event.xdata y_goal = event.ydata fig = plt.figure() fig.canvas.mpl_connect("button_press_event..