Pycharm(Python)을 Matlab 처럼 사용하기



1. Script Run 시 현재 Console에서 실행

  • File –> Settings –> Build, Execution, Deployment –> Console
    • Always show debug console : 활성화
    • User existing console for “Run with Python console” : 활성화
  • 새로운 Script 작성 시 Run Configration에서 Run with Python Console 체크


2. Python Console 실행 시 자주 사용하는 함수 자동 import

File –> Settings –> Build, Execution, Deployment –> Console –> Python Console –> Start Script에 추가

%load_ext autoreload
%autoreload 2

from oklib import *
missing
Python Console 실행 시 자주 사용하는 함수 자동 import


3. Matplotlib의 Cursor Marker 기능 활성화

pip install mplcursors

File –> Settings –> Build, Execution, Deployment –> Console –> Python Console –> Enviroment variables에 추가
Name : MPLCURSORS
Value : {“multiple”: 1}

missing
Matplotlib의 Cursor Marker 기능 활성화


4. Variable 창에서 자주 쓰는 함수 숨김

pycharm 폴더/helpers/pydev/_pydev_bundle/pydev_ipython_console.py의 get_ipython_hidden_vars_dict 함수의 user_hidden_dict.setdefault(‘___’, ‘’) 밑에 추가 (들여쓰기는 space로 동일하게 맞추어야 함)

    user_hidden_dict.setdefault('rad2deg', '')
    user_hidden_dict.setdefault('deg2rad', '')
    user_hidden_dict.setdefault('arange', '')
    user_hidden_dict.setdefault('arccos', '')
    user_hidden_dict.setdefault('arcsin', '')
    user_hidden_dict.setdefault('arctan', '')
    user_hidden_dict.setdefault('array', '')
    user_hidden_dict.setdefault('conj', '')
    user_hidden_dict.setdefault('cos', '')
    user_hidden_dict.setdefault('sin', '')
    user_hidden_dict.setdefault('tan', '')
    user_hidden_dict.setdefault('exp', '')
    user_hidden_dict.setdefault('zeros', '')
    user_hidden_dict.setdefault('pi', '')
    user_hidden_dict.setdefault('randn', '')
    user_hidden_dict.setdefault('standard_normal', '')
    user_hidden_dict.setdefault('randint', '')
    user_hidden_dict.setdefault('uniform', '')
    user_hidden_dict.setdefault('choice', '')
    user_hidden_dict.setdefault('sqrt', '')
    user_hidden_dict.setdefault('dot', '')
    user_hidden_dict.setdefault('fig', '')
    user_hidden_dict.setdefault('ax', '')
    user_hidden_dict.setdefault('newaxis', '')


5. Matplotlib의 한글 표시

파이썬폴더/Lib/site-packages/matplotlib/mpl-data/matplotlibrc 파일 수정

  • backend : Qt5Agg
  • font.family : Malgun Gothic
  • axes.unicode_minus : False
  • savefig.transparent : True
  • figure.facecolor : 0.95


6. Matlab의 자주쓰는 Keyword 추가

  • File –> Settings –> Editor –> Live Templates –> Python 에 아래 명령들 추가
  • 명령 추가 시 하단의 Define을 눌러 Python Check
missing
Matlab의 자주 쓰는 명령어 자동 완성 예시


6.1. 새로운 figure 명령

Abbreviation : fig,
Template text :

fig, ax = subplots()
ax.plot($1$)
ax.set_title('$2$')
ax.set_xlabel('$3$')
ax.set_ylabel('$4$')
ax.grid(True)


6.2. matlab 명령 import

Abbreviation : matlab
Template text :

import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sindg, cosdg, tandg
from oklib.signal import db2, nextpow2, arcsindg, arccosdg, arctandg
from oklib.plot_ok import imagesc
from oklib.plot_qt import imagescqt, plotqt
from oklib.file import save_vars, load_vars
from matplotlib.pyplot import plot, hist, figure, subplots
from numpy import (
    pi, deg2rad, rad2deg, unwrap, angle, zeros, array, ones, linspace, cumsum,
    diff, arange, interp, conj, exp, sqrt, vstack, hstack, dot, cross, newaxis)
from numpy import (cos, sin, tan, arcsin, arccos, arctan)
from numpy import (amin, amax, argmin, argmax, mean)
from numpy.fft import (fft, ifft, fft2, ifft2, fftshift, ifftshift)
from numpy.linalg import svd, norm
from numpy.random import (
    randn, standard_normal, randint, choice, uniform)


6.3. 모든 figure 창 닫기

Abbreviation : close all
Template text :

plt.close('all')


6.4. save 명령

Abbreviation : save
Template text :

save_vars('$END$', globals())


6.5. load 명령

Abbreviation : load
Template text :

load_vars('$END$', globals())


6.6. sympy 명령

Abbreviation : sympy
Template text :

import sympy
from IPython.display import display
from sympy import (
    symbols, init_printing, pi, exp, sqrt, cos, sin, tan, atan,
    diff, integrate, solve, Abs, Eq, simplify)
from sympy.integrals.transforms import fourier_transform
init_printing()
$END$
x, y, th1 = symbols('x y theta_1')

# simultaneous Equation
eq1 = Eq(lhs=x + sqrt(y) + th1**2, rhs=1)
eq2 = Eq(lhs=x + y, rhs=0.5)
eq3 = Eq(lhs=th1, rhs=0.8)
display(eq1)
display(eq2)
display(eq3)
answer = solve([eq1, eq2, eq3], x, y, th1)
display(answer)

# derviation
fx = x**2
dfx = diff(fx, x)
display(dfx)

# integral
Fx = integrate(fx, x)
display(Fx)

# substitute
expr = x**3 + 4*x*y - th1
display(expr.subs([(x, 3), (y, 7), (th1, 30)]))

#fourier transform
Fourier_y = fourier_transform(exp(1j * pi * x**2), x, y)
display(Fourier_y)


7. Auto import

  • File –> Settings –> Editor –> General –> Auto import –> Python의 Show import popup check
missing
Auto import


8. 현재 데이터를 유지한 상태에서 디버깅

  • 현재 python 콘솔의 attach debbuger 클릭
  • break point 생성 후 script Run 수행 (debug script 아님)


9. File 생성 시 주석 추가

File –> Settings –> File and Code Templates –> Python script에 추가

# -*- coding: utf-8 -*-
r"""[Title].  # noqa: 501.

[Description]

Example
-------
[example]

Notes
-----
[Notes]

References
----------
.. [] 책: 저자명. (년). 챕터명. In 편집자명 (역할), 책명 (쪽). 발행지 : 발행사
.. [] 학위 논문: 학위자명, "논문제목", 대학원 이름 석사 학위논문, 1990 
.. [] 저널 논문: 저자. "논문제목". 저널명, . pp.

:File name: ${NAME}.py
:author: ok97465
:Date created: ${DATE} ${TIME}

"""



10. Docstring format 변경

File –> Settings –> Tools –> Python Integrated Tools –> Docstring format을 Numpy로 변경


11. Offline 환경에서 Quick Document 사용 시 버벅임 최소화

File –> Settings –> Tools –> Python External Documentation의 항목 전체 삭제


12. 자주 쓰는 함수 추가

생성한 Python Project 폴더에 아래 파일을 압축 해제하여 oklib 폴더를 생성한다.
oklib Download