์ฌ๊ฐ๋ ์ํ์ค์ ๋๋ค.

Origami Around
let's talk about Bridgerton tea, my ask is open
$LAYYYTER
Misplaced Lens Cap
Lint Roller? I Barely Know Her
Jules of Nature

tannertan36
Aqua Utopia๏ฝๆตทใฎๅบใง่จๆถใ็ดกใ
art blog(derogatory)
sheepfilms

PR's Tumblrdome

็ฅๆฅ / Permanent Vacation

Love Begins

Kiana Khansmith
Xuebing Du
wallacepolsom
Keni

trying on a metaphor
seen from Serbia
seen from United States
seen from United States

seen from Malaysia

seen from United Kingdom

seen from France
seen from Malaysia
seen from Czechia

seen from Netherlands
seen from Malaysia

seen from United Kingdom

seen from United Kingdom
seen from Pakistan

seen from Greece
seen from United Kingdom

seen from Italy

seen from United States
seen from United States

seen from Croatia

seen from United States
@myjr52
์ฌ๊ฐ๋ ์ํ์ค์ ๋๋ค.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch โข No registration required โข HD streaming
Escher์ ๋ฌดํ๋ ๊ณ๋จ์ด.... ๊ฐ๋ฅํ๊ตฐ์โ
๊ตฌ๊ธ ๋ธ๋ก๊ทธ๋ก ์ฎ๊ฒจ๊ฐ์ต๋๋ค.
์ฌ๊ธฐ์ ๊ธ์ ๋ ์ด์ ๊ฐฑ์ ๋์ง ์์ต๋๋ค. ๊ธฐ์กด์ ์๋ (ํนํ python์ ๋ํ ์ค๋ช )๊ธ์ ์๋ก ์ฎ๊ธด ๊ณณ์์ ๋ค ๋ณผ ์ ์์ต๋๋ค. ์๋ก ์ฎ๊ธด ๋ธ๋ก๊ทธ ์ฃผ์๋ย
https://sites.google.com/site/tmptestcmd/
์ ๋๋ค.
๊ณตํ์๋ฅผ ์ํ Python ์ฌ์ฉ๋ฒ 25
Quaternion์ ์ด์ฉํ ์์ธ ์ถ์ ์นผ๋ง ํํฐ์ ๋๋ค.
์ฌ๊ธฐ pdf ํ์ผ์ ์ฐธ์กฐํ์ธ์.
ipython notebook์ ์ด์ jupyter (์ฃผํผํฐ) notebook ์ ๋๋ค.
ipython notebook์ด ์ด๋ฒ์ ๊ฐฑ์ ๋๋ฉด์ jupyter notebook์ผ๋ก ๋ฐ๋์์ต๋๋ค. ๋ฌผ๋ก ๋น๋ถ๊ฐ ipython notebook๋ช ๋ น๋ ์๋ํ ๊ฒ์ผ๋ก ์๊ฐ๋ฉ๋๋ค๋ง.. ์ด์ ๋ถํฐ๋
>> jupyter notebook
์ด๋ผ๋ ๋ช ๋ น์ผ๋ก notebook์ ์คํํ์ธ์. ์์ธํ ๋ด์ฉ์..
http://blog.jupyter.org/2015/08/12/first-release-of-jupyter/
์ ์์ต๋๋ค.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch โข No registration required โข HD streaming
๊ณตํ์๋ฅผ ์ํ Python ์ฌ์ฉ๋ฒ 24
์ค๋๋ง์ ๊ธ์ ๋๋ค. ์ด๋ฒ ๊ธ์์๋ ipython notebook์ด๋ผ๋ ๊ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์ผ๋จ ์คํ์ ํ๋ ค๋ฉด (์ ๊ฐ์ ๊ฒฝ์ฐ Linux์์๋) ๋ช ๋ น์ฐฝ์ ์ด๊ณ command prompt์ ๋ค์๊ณผ ๊ฐ์ด ์น๋ฉด
$ย ipython notebook
์ธํฐ๋ท browser์ (์ ๊ฐ์ ๊ฒฝ์ฐ google chrome์) ๋ค์๊ณผ ๊ฐ์ ์ฐฝ์ด ํ๋ ์๊น๋๋ค.
์ฌ๊ธฐ์ ์ค๋ฅธ์ชฝ ์์ ์๋ย โnewโ ๋ฒํผ์ ๋๋ฅด๊ณ โpython3โณ๋ฅผ ์ ํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฐฝ์ด ์๊น๋๋ค.
์ฌ๊ธฐ์ ๋ค์๊ณผ ๊ฐ์ด a = 1; b =2; c = a+b; print(c) ์ ๊ฐ์ python ํ๋ก๊ทธ๋จ์ ์ฐ๊ณ
์คํ๋ฒํผ (|>)์ ๋๋ฅด๋ฉด ์๋์ ๊ฐ์ด ์คํ๋ ์ฅ๋ฉด์ ๋ณผ ์ ์์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ipython์์ ํ ์ ์๋ ๋ชจ๋ ๊ฒ์ ์ฌ๊ธฐ์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๊ทธ๋ฅ ipython์ ์ฐ์ง ๊ตณ์ด ์ด๋ ๊ฒ notebook์ ์ด์ด์ ์ธ ํ์๊ฐ ์์๊น์?
โํ์์๋คโ๊ฐ ์ ๊ฐ ํ๋์ ๊ฐ์ง๊ณ ์๋ ์๊ฐ์ด์๋๋ฐ, ๋งค์ฐ ์๋ชป๋ ์๊ฐ์ด์๋ค๋ ๊ฒ์ ๋ฉฐ์น ์ ์ ์์์ต๋๋ค.ย
notebook์ ์ด๋ ๊ฒ python ๋ช ๋ น์ ์คํ์ํฌ ๋ฟ๋ง ์๋๋ผ ๋งค์ฐ ์ ์ฉํ ํ๊ฐ์ง ๊ธฐ๋ฅ์ด ์์ต๋๋ค.ย
๊ฐ์ข ๋ฒํผ์ด ์๋ ์ค์ย โcodeโ๋ผ๊ณ ๋์ด์๋ ๋ฒํผ์ด ๋ณด์ด๋๋ฐ์. ์ด๊ฑธ ๋๋ฅด๋ฉดย โmarkdownโ์ด๋ผ๋ ๊ฒ์ ์ ํํ ํ ์ฌ๊ธฐ์ ๊ฐ์ข ์ค๋ช ์ด๋ ์์์ (์ฌ์ง์ด LaTeX ์์์ ์ธ ์๋ ์์ต๋๋ค) ์ธ ์ ์์ต๋๋ค. ์๋ ๊ทธ๋ฆผ์ด ํ ์์ ๋๋ค.
์์ ๊ทธ๋ฆผ ๋งจ ๋ฐ์ค์ ์๋ ๋คํญ์์ โmarkdownโ ์์์ ๋ค์๊ณผ ๊ฐ์ด ์ฐ์ฌ์ง๊ฒ์ ๋๋ค. โ$$โ ๋ก โx(t) = -0.206t^4 + 0.9167 t^3 - ...โ ๋๋ฌ์ธ๊ณ ์คํ ๋ฒํผ (|>)์ ๋๋๋๋ฅด๋ฉด ์์ ๊ฐ์ด ์์ ์์์ผ๋ก ๋ฐ๊พธ์ด ์ค๋๋ค.
notebook์ ๋งค์ฐ ์ ์ฉํ ๊ธฐ๋ฅ์ ๋ฐ๋ก ์ด๊ฒ์ ๋๋ค. ๋งค์ฐ ์์ธํ ์ฌ๋ฌ๊ฐ์ง ์๊ฐ์ ํ๋ก๊ทธ๋จ๊ณผ ํจ๊ป ์ ์ด๋ ์ ์์ต๋๋ค. ๋ณดํต ์ด๋ค ๋ฌธ์ ๋ฅผ ํ๋ ํ๋ก๊ทธ๋จ์ ์ง๊ธฐ ์์ํ๋ฉด ์ด๊ธฐ ์คํ ํ๋ ์์ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ณ , ๊ทธ๊ฒ์ด ์ ์ ์ปค์ง๊ณ ๊ทธ๋ฌ๋ค๊ฐ ๊ฐ์ข ๋ณ๊ฒฝ์ ํ๋๋ฐ... ์ด๊ฑธ ์ ๊ด๋ฆฌํ์ง ์์ผ๋ฉด ๋์ค์ ๋๋์ฒด ์ ๋ด๊ฐ ์ด๋ ๊ฒ ํ๋๊ฐ? ์ด ๋ณ๊ฒฝ์ ์ ํ์ง? ์ด ํ๋ก๊ทธ๋จํ๊ณ ์ ํ๋ก๊ทธ๋จํ๊ณ ๋ญ๊ฐ ๋ค๋ฅธ๊ฑฐ์ง? ๋ฑ๋ฑ์ ์์ ํ ์์ด๋ฒ๋ฆฌ๊ฒ ๋ฉ๋๋ค.
notebook์ ๊ทธ๋ฌํ ๋ชจ๋ ๊ฒ์ ํ๊ณณ์ ๊ด๋ฆฌํ๊ฒ ํด ์ค๋๋ค. ์๋ง๋ ์ ๋ ์์ผ๋ก๋ย โ์ด ๋ถ๋ถ์ ์ ์ด๋ ๊ฒ ๋ฐ๊ฟจ์ง?โ ํ๋ ์ํฉ์ ํผํ ์ ์์ง ์์๊น์?ย
๊ทธ๋ฟ๋ง ์๋๋ผ ์์ ์ด ์ง ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ์ฌ๋์๊ฒ ์ค๋ช ๊ณผ ํจ๊ป ๋ณด๋ด์ค๋๋ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค.
๋ฌผ๋ก , ์ด๋ ๊ฒ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ๊ณผ์ ์ notebook์ ์ด์ฉํ์ฌ ๊ธฐ๋กํด ๋๊ธด ํ์ง๋ง, ์ค์ ์ปค๋ค๋ ํ๋ก๊ทธ๋จ์ด๋ ๋๋์ ๋ฐ์ดํ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ์๋ notebook์์ ์คํํ๊ธฐ๋ณด๋ค ์๋ ํ๋๋๋ก ํ๋ก๊ทธ๋จ ์ ์ฉ ํ๊ฒฝ์์ ํ๋๊ฒ์ด ํ๋ช ํ๊ฒ ์ฃ .
๊ณตํ์๋ฅผ ์ํ Python ์ฌ์ฉ๋ฒ 23
์ด๋ฒ์๋ FORTRAN์ผ๋ก ์ง์ฌ์ ธ ์๋ ํจ์๋ฅผ python์์ ๋ถ๋ฅผ์ ์๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.
21์ธ๊ธฐ์ ๋ฌด์จ FORTRAN์ด๋ ํ๋ ์๊ฐ์ ๊ฐ์ง ์๋ ์์ง๋ง, ๊ณผ๊ฑฐ์ ๋ง์ ์์นํด์ ํ๋ก๊ทธ๋จ์ด FORTRAN์ผ๋ก ๊ฐ๋ฐ๋์๊ณ ์ด ํ๋ก๊ทธ๋จ๋ค์ด ์ฌ์ ํ ์ฌ๊ธฐ์ ๊ธฐ์์ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.ย
ํ์ง๋ง ์ด๋ฏธ ๊ฐ๋ฐ์ด ์์ฑ๋ ํจ์๋ฅผ ๋ค์ python์ผ๋ก ํด์ํ๋ ์์ ์ ๋งค์ฐ ๋ถํ์ํ๊ณ ๊ฑฐ์ถ์ฅ์ค๋ฌ์ด ์ผ์ ๋๋ค. ์ด๋ด๋๋ฅผ ์ํด์ ๊ทธ๋ฅ FORTRAN ํจ์๋ฅผ compileํด์ ์ผ์ข ์ library์ฒ๋ผ ๋ง๋ค์ด ๋ ๋ค์ python์์ ๋ถ๋ฅด๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ฃผ์ด์ง ๋ ์ง์ ์์น์ ๋ฐ๋ฅธ ์ง๊ตฌ์๊ธฐ์ฅ๊ฐ์ ๊ณ์ฐํด์ฃผ๋ IGRF12 ํจ์๋ฅผ ์์ ๋ก ์ฌ์ฉํด๋ณด๊ฒ ์ต๋๋ค. ์๋ FORTRAN ํ๋ก๊ทธ๋จ์ ์ฌ๊ธฐ์ ๋ด๋ ค๋ฐ์ ์ ์์ต๋๋ค.
http://www.ngdc.noaa.gov/IAGA/vmod/igrf12.f
๊ทธ๋ฆฌ๊ณ ํ๋ก๊ทธ๋จ์ ๋ํ ์ค๋ช ์ ์ฌ๊ธฐ์์ ๋ณผ ์ ์์ต๋๋ค.
http://www.ngdc.noaa.gov/IAGA/vmod/igrf.html
igrf12.f ๋ด๋ถ๋ฅผ ๋ค์ฌ๋ค ๋ณด๋ฉด ์ง๊ตฌ์๊ธฐ์ฅ์ ๊ณ์ฐํ๋ ํจ์๊ฐย
subroutine igrf12syn (isv,date,itype,alt,colat,elong,x,y,z,f)
๋ผ๋ ์ด๋ฆ์ผ๋ก ๋์ด์๊ณ ๊ทธ ์์ ์๋ ๋ด์ฉ์ ์ด ํจ์๋ฅผ ์ค์ ๋ถ๋ฌ์ ์คํํ๋ ๋ถ๋ถ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ด ํจ์๋ฅผ python์์ ๋ถ๋ฅผ๊ฒ์ด๋ฏ๋ก ์๋ถ๋ถ ๋ด์ฉ์ ํ์์๊ณ ์ด ํจ์๋ถ๋ถ๋ง ํ์ํฉ๋๋ค. ๊ทธ๋์, ์์ ๋ค ์๋ผ๋ด๊ณ ์์ ํจ์๋ง ํฌํจํ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ๋ง๋ญ๋๋ค.
https://gist.githubusercontent.com/myjr52/62ca6ffc3e9c78ea0411/raw/df1ca256826579fe9810b1058ca3c2b57b928611/igrf12.f
ํ๊ฐ์ง ์์ ํ์ผ์์ ๋ด๋ถ์ ์ถ๊ฐ๋ ๋ถ๋ถ์ด ์๋๋ฐ... ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ ๋๋ค:
Cf2py intent(out) x Cf2py intent(out) y Cf2py intent(out) z Cf2py intent(out) f
์ด ๋ถ๋ถ์ด FORTRAN ํ๋ก๊ทธ๋จ์ python์์ ๋ถ๋ฅผ ์ ์๋ ํจ์๋ก ๋ฐ๊ฟ์ฃผ๋ f2py๊ฐ ์๋ํ ๋ subroutine igrf12syn์ ์๋ ๋งค๊ฐ๋ณ์ ์ค์ x, y, z, f๋ ์ถ๋ ฅ๋ณ์๋ผ๋ ๊ฒ์ ์๋ ค์ฃผ๊ธฐ ์ํจ์ ๋๋ค.
operating system prompt์์ ์ด์ f2py๋ฅผ ์ด์ฉํด ๋ณํ๋ igrf12.f๋ฅผ ๋ค์๊ณผ ๊ฐ์ด compileํฉ๋๋ค. (์ฐธ๊ณ ๋ก python์ ์ ์ฒ๋ผ anaconda๋ฅผ ํตํด ์ค์นํ๋ค๋ฉด f2py3๋ผ๋ ํ๋ก๊ทธ๋จ์ด ์ด๋ฏธ ๊ฐ์ด ๊น๋ ค์์๊ฒ๋๋ค)
> f2py -c -m igrf12_fortran igrf12.f
-c ๋ compile ํ๋ผ๋ ๋ป์ด๊ณ , -m์ library ๋ง๋ค๋ ์ด๋ฆ์ igrf12_fortran (ํน๋ณํ ๋ค๋ฅธ ์ด๋ฆ์ ์ํ๋ค๋ฉด ์ฌ๊ธฐ์ ์ด๋ฆ์ ๋ฐ๊พธ๋ฉด ๋ฉ๋๋ค)์ด๋ผ๊ณ ํ๋ผ๋ ๋ป์ ๋๋ค. ์๋ฅผ ์คํํ๊ณ ๋๋ฉด ์ด๋ค ์ด์์์คํ ์ ์ฐ๋๋์ ๋ฐ๋ผ ๋ค๋ฅธ๋ฐ...
linux์์๋ igrf12_fortran.cpython-34m.so๋ผ๋ library๊ฐ ์๊ฒผ๊ณ
mac os-x์์๋ igrf12_fortran.so๋ผ๋ library๊ฐ ์๊ฒผ์ต๋๋ค.
์ด๋ฅผ ๋ถ๋ฅด๋ ๋ฐฉ๋ฒ์ย
>> import igrf12_fortran
ํ ๋ค์์
>> igrf12_fortran.igrf12syn(.....)ย
ํ๋ฉด ๋ฉ๋๋ค.
์ข ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ตํ๊ฒ ์ฐ๊ธฐ ์ํด์ ๋ค์๊ณผ ๊ฐ์ด python ํ๋ก๊ทธ๋จ์ ๋ง๋ค์์ต๋๋ค.
https://gist.githubusercontent.com/myjr52/62ca6ffc3e9c78ea0411/raw/6d8cbc3693f384a3e83f122b7a48155f71fb4b11/igrf12.py
์ด์ ๋ python์์ ๋ค์ ์์๋ก ๋ถ๋ฅด๋ฉด ๋ฉ๋๋ค.
>>ย import igrf12 ย ย ย ย ย
>> ย igrf12.igrf12(0,2016,2,4000,23,32) ย ย
(-1216.8147739252843, 24122.237297648033, 118869.7813460386)
๋ง์ง๋ง์ ๋์จ 3๊ฐ์ ์ซ์๊ฐ ์ง๊ตฌ ์๊ธฐ์ฅ์ ๋ถ์ชฝ, ๋์ชฝ, ์ง๊ตฌ ์ค์ฌ๋ฐฉํฅ ๊ฐ์ด nT๋ก ๊ณ์ฐ๋ ๊ฒ์ ๋๋ค.
๊ณตํ์๋ฅผ ์ํ Python ์ฌ์ฉ๋ฒ 22
์ง๋๋ฒ์ ๋ง๋ค์๋ ์ง์๋ฅผ ์ฐพ๋ ํจ์์ ๋๋ค.
def is_even(number): ย if ((number % 2 == 0) and (number != 0)): ย ย ย return True ย return False
์ด๊ฒ์ ์ด์ฉํด์ 1๋ถํฐ 100๊น์ง ์์ฐ์์ค์ ์ง์์ ๋ฃจํธ๊ฐ์ ๊ตฌํด์ ๋ค ๋ํ๋ ์ผ์ ํด๋ณผ๊น์? ๋ง์ฝ ์ด๋ฅผ ์ํด์ ๋ค์๊ณผ ๊ฐ์ด ํ๋ก๊ทธ๋จ์ ์งฐ๋ค๋ฉด
import math total = 0 for x in range(1,101): ย ย if is_even(x): ย ย ย ย total = total + math.sqrt(x)
์ด๊ฑด ๋งค์ฐ C๋ Fortran์ธ์ด์ค๋ฌ์ด ํ๋ก๊ทธ๋จ์ ๋๋ค. ์ด๊ฒ๋ณด๋ค๋ ๋ค์๊ณผ ๊ฐ์ด ์ง์์ ๋ฃจํธ๊ฐ์ ๊ฐ์ง๋ generator๋ฅผ ๋ง๋ค๊ณ
all_sqrt_even = (math.sqrt(x) for x in range(1,101) if is_even(x))
๊ทธ ๋ค์ ํฉ์ ๊ตฌํ๋ฉด
total = sum(all_sqrt_even)
๋ฉ๋๋ค.
์ด์ ๊น์ง๋ ย generator๋ฅผ ย โ( )โ๋ฅผ ์ด์ฉํด์ ๋ง๋ค์๋๋ฐ... yield๋ฅผ ํจ์๋ด์ ์ฌ์ฉํด์ generator๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
def get_even(number): ย ย while number > 0: ย ย ย ย if is_even(number): ย ย ย ย ย ย yield number ย ย ย ย number -= 1
์ด ํจ์๋ get_even(10)ํ๋ฉด 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์ ์ค์ ์ง์๋ฅผ ํฌํจํ๋ generator๋ฅผ ๋ง๋ญ๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ํจ์๋ฅผ ๋ถ๋ฅด๋ฉด
aa = get_even(10)
aa๋ 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ง์์ธ ์์ฐ์๋ฅผ ํฌํจํ๋ generator๊ฐ ๋ฉ๋๋ค. ์์์ ์ด๋ฏธ ๋งํ์ง๋ง, ์ฃผ์ํ ๊ฒ์ list๋ [10, 8, 6, 4, 2] ์ด๋ ๊ฒ 5๊ฐ์ ์ซ์๋ฅผ ๋ค ๋ง๋ค์ด์ 5๊ตฐ๋ฐ ์ ์ฅ์ฅ์์ ๋ณด๊ดํด ๋์ง๋ง, generator๋ ํ์ํ ๋ ํ๊ฐ์ฉ ๊ฐ๋ค์ ๋ง๋ค์ด๋ด๊ณ ๋ค ์ฐ๊ฒ ๋๋ฉด ํ ๋น generator๊ฐ ๋ฉ๋๋ค. ํ๊ฐ์ฉ ๊ฐ์ ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ์
next(aa)
10
์ด๋ ๊ฒ next() ํจ์๋ฅผ ์ฐ๋ฉด ๋ฉ๋๋ค. ย ์ฐ์ํด์ ๋ถ๋ฅด๋ฉด 8, 6, 4, 2๋ฅผ ์ถ๋ ฅํ๊ณ ๊ฒฐ๊ตญ StopIteration์ ์ถ๋ ฅํ๋ฉด์ ๋ชจ๋ ์์๊ฐ ๋ค ์์ง๋์๋ค๊ณ ์๋ ค์ค๋๋ค.
์ด๋ป๊ฒ ์ด๋ฐ์ผ์ด ๊ฐ๋ฅํ ๊น์? ์ด๊ฑด ๋ฐ๋ก ๋งค์ฐ ํน๋ณํ yield์ ๊ธฐ๋ฅ๋๋ฌธ์ ๋๋ค. ๋ณดํตํจ์๋ (๋ง์ฝ yield๊ฐ ์๋๊ณ return์ด๋ผ๋ฉด) ๊ฐ์ ๋ฐ๊นฅ์ผ๋ก ๋๋ ค์ฃผ๊ณ ๋๋ฉด ๋ด๋ถ์ ์ํ๊ฐ ์ด๊ธฐํ ๋์ด ๋ฒ๋ฆฝ๋๋ค. ํ์ง๋ง ย yield๋ ๊ฐ์ ๋๋ ค์ฃผ๊ณ ๋ํ ๋ด๋ถ์ ์ํ๋ฅผ ๊ธฐ์ตํ๊ณ ์ ๋ค์ next( )๊ฐ ๋ถ๋ฆฌ์ฐ๋ฉด ์ ์ ์ํ์์ ๋ค์ yield๋ฅผ ๋ง๋ ๋๊น์ง ์คํํฉ๋๋ค.ย
๋ฌด์จ ๋ง์ธ์ง ์ข ๋ ์์ธํ ์๊ธฐ์ํด ์์์ ๋ง๋ get_even() ํจ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ์ต๋๋ค.
def get_even(number): ย while number > 0:ย ย ย ย ย ย ย ย ย if is_even(number): ย ย ย ย ย print(โbefore yieldโ) ย ย ย ย ย yield number ย ย ย ย ย print(โafter yieldโ) ย ย ย number -= 1 ย ย ย print(โafter reducing the numberโ)
์ด๋ ๊ฒ ์์ ํ ํย
aa = get_even(10)
ํ๊ณ ๋์ย
next(aa)
ํ๋ฉด
before yield Out[57]: 10
์ด ์ถ๋ ฅ๋ฉ๋๋ค. ๋ณด๋ค์ํผ ์์ ํจ์์์ย โyield numberโ๊น์ง ์คํ๋๊ณ ํ์ฌ number๊ฐ์ด 10์ด๋ฏ๋ก ์ด ๊ฐ์ ๋๋ ค์ฃผ๊ณ ์ ํจ์ ์คํ์ด ๋ฉ์ถ์์ต๋๋ค. ํ๋ฒ ๋ย
next(aa)
๋ฅผ ๋ถ๋ฅด๋ฉด
after yield (๊ทธ์ ์ yield์์ ๋ฉ์ท์ผ๋ฏ๋ก ๋ฐ๋ก ๊ทธ ๋ค์์ค์ ์คํํ๊ณ ) after decreasing number (number๋ฅผ ํ๋ ์ค์ฌ์ 9๋ก ๋ง๋ค๊ณ ) after decreasing number (9๋ ์ง์๊ฐ ์๋๋๊น if์์ผ๋ก ์๋ค์ด๊ฐ๊ณ ๋ค์ number๋ฅผ ํ๋ ์ค์ฌ์ 8๋ก ๋ง๋ค๊ณ ) before yield (8์ ์ง์์ด๋๊น if์์ผ๋ก ๋ค์ด๊ฐ์ yield number๋ฅผ ๋ง๋ฌ์ผ๋ 8์ ๋๋ ค์ฃผ๊ณ ๊ฑฐ๊ธฐ์ ๋ฉ์ถ๋๊น) Out[58]: 8 (8์ด ์ถ๋ ฅ๋ฉ๋๋ค)
์ด๋ ๊ฒ ๊ณ์ํด์ next๋ฅผ ๋ถ๋ฅด๋ฉด 2๊ฐ ์ถ๋ ฅ๋๊ณ ๊ทธ ๋ค์์๋ ์์๊ฐ ๋๋ฏ๋ก while-loop๊ฐ ๋ฉ์ถ๋ฉด์ StopIteration์ ๋ฐ์์ํค๋ฉด์ ํจ์๊ฐ ๋๋๊ฒ ๋ฉ๋๋ค.
๊ณตํ์๋ฅผ ์ํ Python ์ฌ์ฉ๋ฒ 21
์ค๋์ generator์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์ค๋ ๋ด์ฉ์ ์๋ ๋งํฌ์ ์๋ ๋ด์ฉ์ ์ฐธ์กฐํด์ ์ข ๋ ์ฝ๊ฒ ๋ง๋ค์์ต๋๋ค.ย
http://www.jeffknupp.com/blog/2013/04/07/improve-your-python-yield-and-generators-explained/
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์์ํด๋ณด์ฃ : ์ฃผ์ด์ง ์์ฐ์๋ณด๋ค ์์ ๋ชจ๋ ์ง์ ์์ฐ์๋ฅผ ์ฐพ์ผ๋ ค๊ณ ํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ง์์ธ์ง ์๋์ง ๊ตฌ๋ณํ๋ ํจ์๋ฅผ ์ผ๋จ ๋ค์๊ณผ ๊ฐ์ด ๋ง๋ค ์ ์์ต๋๋ค.
def is_even(number): ย ย if ((number % 2 == 0) and (number != 0)): ย ย ย ย return True ย ย return False
์ด ํจ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์คํํ๋ฉด
>> is_even(10)
True
>> is_even(3)
False
์ฃผ์ด์ง ๊ฐ์ด ์ง์์ด๋ฉด True, ํ์์ด๋ฉด False ๊ฐ์ ๋๋ ค์ค๋๋ค.
๊ทธ๋ฌ๋ฉด ์๋ฅผ ๋ค๋ฉด 10๋ณด๋ค ์์ ๋ชจ๋ ์ง์๋ฅผ ์ฐพ์ผ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด list๋ฅผ ๋ง๋ค ์ ์๊ฒ ์ฃ .
>> cc=[x for x in range(1,11) if is_even(x)]
๊ทธ๋ฌ๋ฉด cc = [2, 4, 6, 8, 10]์ด ๋ฉ๋๋ค. ย ๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ list๊ฐ ์งง์ง ์๊ณ ๋งค์ฐ ๊ธธ๋ค๋ฉด ์ด๋ป๊ฒ ํ ๊น์? ์๋ฅผ ๋ค๋ฉด range(1,10000000000000000001) ์ ๋ ๋๋ฉด ์ปดํจํฐ์ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ค ์ฐ๊ณ ๋ ๋ชจ์๋์ง๋ ๋ชจ๋ฆ ๋๋ค. ์ด๋ ๊ฒ list๊ฐ ํฌ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋ณดํ๋๋ฐ ์๊ฐ์ด ๋งค์ฐ ๋ง์ด ๊ฑธ๋ฆฝ๋๋ค. ๋์ ์ ๋ค์๊ณผ ๊ฐ์ด ํ๋ฉดย
>> cc=(x for x in range(1,100000000000000001) if is_even(x))
๋๋๊ฒ๋ ์ด๋ฅผ ์คํํ๋๋ฐ ๊ฑฐ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง ์์ต๋๋ค. ์ด๋ป๊ฒ ์ด๋ฐ ์ผ์ด ๊ฐ๋ฅํ ๊ฑธ๊น์?ย
๋น๋ฐ์ย โ[ ]โ์ย โ( )โ์ ์ฐจ์ด์ ๋๋ค. ์ด๋ฏธ ์๊ณ ์๋ฏ์ด โ[ ]โ์ ์ฌ์ฉํ๋ฉด list๊ฐ ๋ง๋ค์ด์ง๋๋ค. list๋ ๊ทธ์ผ๋ง๋ก ๊ทธ ์์ ์๋ ๋ชจ๋ ๋ด์ฉ๋ฌผ์ ๋ค ๋ง๋ค์ด์ ๊ฐ๋ณ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด๋ก๋๋ค.
ํ์ง๋ง โ( )โ๋ฅผ ์ฌ์ฉํ๋ฉด list๊ฐ ์๋ generator๊ฐ ๋ง๋ค์ด์ง๋๋ค.ย
>> cc
ํ๋ฉด ๊ทธ์ ์ list์์๋๋ ๊ฐ๊ณ ์๋ ๋ด์ฉ๋ฌผ์ ๋ค ๋ณด์ฌ์ฃผ์ง๋ง, ์ด์ ๋ generator์ด๊ธฐ ๋๋ฌธ์ ๋จ์ํ ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
<generator object <genexpr> at 0x7f3110764fc0>
์ค์ ์์ ๋ด์ฉ์ ํ๋์ฉ ๋ณด๊ณ ์ถ์ผ๋ฉด next(...)๋ผ๋ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ์ฆ,
>> next(cc)
2
>> next(cc)
4
>> next(cc)
6
์ ๊ฐ์ด next(..)๋ฅผ ์ฐ๋ฉด generator cc๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฐ์์ ๊ทธ์ ์ ๋ฐ๋ก ๋ถ๋ฆฌ์์ ธ์ ์ฐ์ฌ์ง ๊ฐ ๋ฐ๋ก ๊ทธ ๋ค์๊ฐ์ ๋ณด์ฌ์ค๋๋ค.
์ฆ, ์ค์ ๋ก 1๋ถํฐย 100000000000000001๊น์ง์ ๋ชจ๋ ์ง์๊ฐ ํ๊บผ๋ฒ์ ๋ค ํ์ํ ์ฐ์ฐ์ ๊ฑฐ์ ์์ต๋๋ค. ๋๋ถ๋ถ ๊ฐ๊ฐ์ ๊ฐ ํ๋ ํ๋๋ฅผ ๊ฐ์ง๊ณ ์ด๋ค ์ฐ์ฐ์ ํ๊ณ ์ต์ข ๊ฒฐ๊ณผ๊ฐ๋ง ์๋ฉด ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๊ทธ ์ซ์ ๋ฒ์๋ด์ ์๋ ๋ชจ๋ ์ง์์ ๊ฐ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ์ ๊ตฌํ๋ คํ๋ ๊ฒฝ์ฐ ํ๋ํ๋ ์ง์๊ฐ์ 2๋ถํฐ ์์ํด์ ๋ง๋ค์ด๊ฐ๋ฉด์ ๊ณ์ ๋ํด๋๊ฐ๋ฉด ๋์ง, ๋ชจ๋ ์ง์๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ค ๋ถ๋ฌ๋ ํ์๋ ์์ต๋๋ค.
์ข ๋ ์์ generator๋ฅผ ๋ง๋ค์ด๋ณด์ฃ .
>> cc=(x for x in range(1,5) if is_even(x))
์ด์ next(..)๋ก ๊ฐ์ ๋ถ๋ฅด๋ฉด
>> next(cc)
2
>> next(cc)
4
>> next(cc)
Traceback (most recent call last):
ย File "<ipython-input-181-dea75668052a>", line 1, in <module> ย ย next(cc)
StopIteration
์ฌ๊ธฐ์ ๋ณด์ฌ์ฃผ๋ฏ์ด generator๋ด์ ๊ฐ์ด ๋ค ์์ง๋๋ฉด StopIteraction์ด๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉฐ ๋ ์ด์ ๊ฐ์ด ์๋ค๋ ๊ฒ์ ์๋ ค์ค๋๋ค.
๋ค์๋ฒ์๋ generator๋ฅผ ๋ง๋๋ yield์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ณตํ์๋ฅผ ์ํ Python ์ฌ์ฉ๋ฒ 20
์์ฃผ ์ค๋๋ง์ ๊ธ์ ์ฐ๋๋ฐ์. ์ด๋ฒ ๊ธ๋ถํฐ ๋น๋ถ๊ฐ์ python ๋ฌธ๋ฒ์์ฒด์ ์ง์คํด์ ๋ช๊ฐ์ง๋ฅผ ์ค๋ช ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
ํนํ ์ ์ฒ๋ผ ์ค๋์ ์ ํ๋ก๊ทธ๋จ ์ง๋๋ฒ์ ๋ฐฐ์ฐ๊ณ MATLAB๊ฐ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ย ๋๋ถ๋ถ์ ์๊ฐ์ ๋ณด๋ธ ์ฌ๋์๊ฒ ์ฝ๊ฐ์ ์์ํ ํ๋ก๊ทธ๋จ ๋ฌธ๋ฒ์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ทธ ์ฒซ๋ฒ์งธ๊ฐ list์ ๋๋ค.
์ฐธ๊ณ ๋ก ์ด ๋ด์ฉ์ ์๋ ๋งํฌ์ ์๋ ๋ด์ฉ์ ์ฐธ๊ณ ํ์ต๋๋ค:
http://www.python-course.eu/python3_list_comprehension.php
๋ค์๊ณผ ๊ฐ์ด โ[ ]โ์์ ๋ด์ฉ๋ฌผ์ ๋ฃ์ผ๋ฉด list๊ฐ ๋ง๋ค์ด ์ง๋๋ค.
>> ย a = [1, 2, โabcโ, [3,4,5]]
list์ ๊ฐ ๋ด์ฉ๋ฌผ์ ๋ฐฉ๊ธ ์์์ ๋ณด๋ฏ์ด ๋ฐ๋์ ๊ฐ์ ์๋ฃ ํํ์ผ ํ์๋ ์์ต๋๋ค. a[0] = 1์ด๊ณ a[2]=โabcโ์ด๊ณ a[3] = [3,4,5]์ ๋๋ค. ์ฆ,
>> type(a)
list
>> type(a[0])
int
>> type(a[2])
str
>> type(a[-1])
list
์ ๋๋ค.
์ด๋ฏธ ๋ง๋ค์ด์ง list๋ฅผ ์ด์ฉํด์ ์๋ก์ด list๋ฅผ ๋ง๋ค์๋ ์์ต๋๋ค. a์ ๊ฐ ํญ์ ์ ๊ณฑํ ๊ฐ์ ๊ฐ๋ list๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ง๋ค๋ฉด
>> b = [ x**2 for x in a]
๋๋๋ฐ, ์ฌ๊ธฐ โfor x in aโ ์์ x๊ฐ a์ ์๋ ๊ฐ๊ฐ์ ๋ด์ฉ๋ฌผ๋ก ์์ฐจ์ ์ผ๋ก ๋์น๋ฉ๋๋ค. ์ฆ, x=a[0] -> x = a[1] -> x = a[2] ...
๊ทธ๋ฐ๋ฐ ์์ ๋ด์ฉ์ ์คํํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์๋ํ๋ฉด a์๋ ์ ์๋ง ์๋ ๊ฒ์ด ์๋๊ณ ๋ฌธ์์ด๋ ์๊ณ , list๋ ์๋๋ฐ ์ด๊ฒ์ ์ ๊ณฑ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ด ํ๋ฉด
>> b = [x**2 for x in a[0:2]]
b ย = [1, 4] ๋๋๋ฐ a[0:2]๊ฐ a[0]๊ณผ a[1]๋ก ย x๊ฐ์ ์ ์๊ฐ 1๊ณผ 2๋ฅผ ๋๊ฒจ์ฃผ๋ฏ๋ก ํ๋ก๊ทธ๋จ์ด ์ค๋ฅ์์ด ์คํ๋ฉ๋๋ค. ์ด๊ฒ์ ์ข ๋ ์๋์ผ๋ก ์ธ์ํด์ ์ ์์ผ๋๋ง ๋๊ฒจ์ฃผ๊ฒ ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ๋ฉด ๋ฉ๋๋ค.
>> b = [x**2 for x in a if type(x)==int]
์ด์ ๊ฐ์ด ํ๋ฉด x์ ์๋ฃํ์ด ์ ์์ผ๋๋ง x๊ฐ์ด x**2 ์ฐ์ฐ์ผ๋ก ๋๊ฒจ์ง๊ฒ ๋ฉ๋๋ค.
์ธ๊ฐ์ for-loop๋ฅผ ์กฐํฉํด์ ์ธ ์๋ ์์ต๋๋ค:
>>ย [(x,y,z) for x in range(1,31) for y in range(x,31) for z in range(y,31) if x**2 + y**2 == z**2]
์ด๋ ๊ฒ ํ๋ฉด 1๋ถํฐ 30๊น์ง ์๋ ๋ชจ๋ ์ ์์ ์กฐํฉ์์ ํผํ๊ณ ๋ผ์ค์ ์ ๋ฆฌ๋ฅผ ๋ง์กฑํ๋ ์ธ๊ฐ์ ์ ์์์ด ์์ฑ๋ฉ๋๋ค.
๋ค์ํ์๋ list์ ๋ฐ์ ํ ๊ด๋ จ์ด ์๋ generator์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch โข No registration required โข HD streaming
๊ณตํ์๋ฅผ ์ํ Python ์ฌ์ฉ๋ฒ 19
2015_1_21(15h 2m 0s){0:04d}.tif'.format(idx) ย ์ ์ถฉ์ ์ด๋ฏธ์ง๋ฅผ ํด์ํ๋ ์๋ ํ๋ก๊ทธ๋จ์ ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
https://gist.github.com/myjr52/64b8b80da1e2b4efedde
์ฐ๋ฆฌ๊ฐ ๊ทธ ๋์ ์์ฃผ ์ฌ์ฉํ๋ numpy์ matplotlib๋ง๊ณ , ๋ค์ ๋๊ฐ์ง ํจ์ ๋ชจ์์ง์ ์ด ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํฉ๋๋ค.
from skimage.segmentation import boundaries from scipy import ndimage
ํนํ skimage๋ ์ฌ๋ฌ๊ฐ์ง ๋งค์ฐ ์ ์ฉํ ๊ทธ๋ฆผ ์ฒ๋ฆฌ ํจ์๊ฐ ๊ตฌํ๋์ด์์ต๋๋ค. ์์ธํ ์ค๋ช ์ ์๋์ ๊ฐ๋ฉด ๋ณผ ์ ์์ต๋๋ค.
http://scikit-image.org/
์ผ๋จ ๋ค๊ฐ์ ๊ทธ๋ฆผ ํ์ผ ์ด๋ฆ์ด
2015_1_21(15h 2m 0s)0001.tifย
2015_1_21(15h 2m 0s)0002.tif ย ย
2015_1_21(15h 2m 0s)0003.tif ย
...
ํ์์ผ๋ก ๋์ด์์ต๋๋ค. ์ด ๊ทธ๋ฆผ์ ํ์ฅ์ฉ for-loop์์ ์ฝ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด ํ์ผ ์ด๋ฆ์ ์์ฑํฉ๋๋ค.
file_name = '2015_1_21(15h 2m 0s){0:04d}.tif'.format(idx)
์ฌ๊ธฐ์ ๋งจ ์ค๋ฅธ์ชฝ๋์ ์๋ idx๊ฐ 1๋ถํฐ ์ฆ๊ฐํ๋๋ฐ {0:04d}๋ถ๋ถ์ด ์ด ์ซ์๋ก ๋์ฒด๋ฉ๋๋ค. ํ๊ฐ์ ์ ๋ ฅ๋ฐ์ ์์ผ๋ฏ๋ก {0: ...}์์ 0์ด ์ฒซ๋ฒ์งธ ์ ๋ ฅ idx๋ฅผ ์๋ฏธํ๊ณ {0:04d}์์ 04d๋ index ์ ์ ์ทจ๊ธ์ ํ๋๋ฐ(d๊ฐ ์ ์ ์ทจ๊ธํ๋ผ๋ ๋ป์ ๋๋ค), 4์๋ฆฌ์ ์ถ๋ ฅํ๊ณ ๋น์๋ฆฌ๋ 0์ผ๋ก ์ฑ์ฐ๋ผ๋ (04๋ถ๋ถ) ๋ป์ ๋๋ค.
matplotlib์ imread (image read์ ์ค์๋ง?)๋ผ๋ ํจ์์ ์์ ํจ์ ์ด๋ฆ์ ๋์ ํด์ ํด๋น ๊ทธ๋ฆผ์ ์ฝ์ต๋๋ค.
Worm_Image = plt.imread(file_name)
์ด๋ ๊ฒ ์ฝ์ Worm_Image๋ 3์ฐจ์ ๋ฐฐ์ด์ธ๋ฐ, [:,:,0], [:,:,1], [:,:,2]๊ฐ ๊ฐ๊ฐ ๋นจ๊ฐ์, ํ๋์, ๋ น์์ ์ ๋์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๋ฐฐ์ด์ ๋๋ค. ์ฆ, ์ฝ์ ์๋์ ๊ทธ๋ฆผ์ ์๊น์ด ๋ณดํต ์๋๋ฐ, ์ฌ๊ธฐ์ ์ด ๋ฐฐ์ด์ ํ๋ฐฑ๊ทธ๋ฆผ์ผ๋ก ๋ฐ๊พธ๊ธฐ ์ํด ์ด ์ธ๊ฐ์ ๋ฐฐ์ด์ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ค์น๋ฅผ ๋์ด์ 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ง๋ญ๋๋ค.
Worm_Image = (0.2989*Worm_Image[:,:,0]/max_val_img ย ย ย ย ย ย ย ย + 0.5870*Worm_Image[:,:,1]/max_val_img ย ย ย ย ย ย ย ย + 0.1140*Worm_Image[:,:,2]/max_val_img)
์ฌ๊ธฐ์ mag_val_imag๋ ์๋ ๊ทธ๋ฆผ ๋ฐฐ์ด์ด ๊ฐ๊ณ ์๋ ์ต๋๊ฐ์ ๋๋ค. ์ด ์ต๋๊ฐ์ผ๋ก ์๋ ๊ทธ๋ฆผ๋ฐฐ์ด์ ๋๋ ์ 0๊ณผ 1์ฌ์ด๊ฐ์ผ๋ก ๋ง๋ค๊ณ , ๊ทธ ์์ ๊ฐ์ค์น๋ฅผ ๊ฐ๊ฐ 0.2989, 0.5870, 0.1140์ผ๋ก ๋์ด์ ๋ํ์ต๋๋ค. ์ด ๊ฐ์ค์น๋ ์ธ๋ฏ๋ณด์์๋ ํน๋ณํ ์๋ฏธ๊ฐ ์์ด๋ณด์ด๋๋ฐ์. ์๊น์๋ ๊ทธ๋ฆผ์ ํ๋ฐฑ์ผ๋ก ๋ฐ๊ฟ๋ ์ฌ์ฉ๋๋ ํ์ค์ ์ธ ๊ฐ์ค์น์ ๋๋ค. ์ด๋ป๊ฒ ์ด ๊ฐ์ด ์ ํด์ก๋์ง๋ ์๋ง๋ ๊ทธ๋ฆผ์ฒ๋ฆฌ ์ด๋ก ์์ ์๋ฏํฉ๋๋ค.
์ฌ๊ธฐ์ ์ด ๊ทธ๋ฆผ์ฒ๋ฆฌ์ ํฐ ๋ชฉ์ ์ ์ ์ถฉ ๋ชธ์ ๊ฒฝ๊ณ์ ์ ์ฐพ์๋ด๋๊ฒ์ธ๋ฐ, ๋ค์๊ณผ ๊ฐ์ด ๊ฐ๋จํ find_boundaries๋ผ๋ ํจ์๋ฅผ ์ฐ๋ฉด ๋ฉ๋๋ค.
Worm_Image = boundaries.find_boundaries(Worm_Image)
๊ทธ๋ฐ ๋ค์ ํฐ ํ๊ณก์ ์์ ์์ ํ๊ณก์ ์ด ์์ ์ ์๋๋ฐ ์ด๋ฐ ์์ ํ๊ณก์ ์ scipy์ ์๋ ๋ค์ ํจ์๋ก ๋ชจ๋ ์์ ๋ฒ๋ฆฝ๋๋ค.
Worm_Image = ndimage.binary_fill_holes(Worm_Image)
๊ทธ๋ฐ ๋ค์ ํ๋ฒ ๋ ๊ฒฝ๊ณ์ ์ ์ฐพ๋ ํจ์๋ฅผ ์ ์ฉํ๋ฉด, ์ฃผ์ด์ง ๊ทธ๋ฆผ์ ๊ฒฝ์ฐ ๊ฑฐ์ ์๋ฒฝํ๊ฒ ์ ์ถฉ์ ๊ฒฝ๊ณ์ ์ ์ฐพ์๋ ๋๋ค.
๊ณตํ์๋ฅผ ์ํ Python ์ฌ์ฉ๋ฒ 18
๊ณตํ์ด๋ ๊ณผํ์์ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ ๊ฒ๊ณผ ย ์๊ฐ์๋ฃ๋ฅผ ์ ๊ณตํ๋ ์ธก์ ์ฅ๋น์ ์ค์์ฑ์ด ๋๋ ์ด ์ปค์ง๊ณ ์์ต๋๋ค. ย ๊ทธ๋ฆผ ์๋ฃ ์ฒ๋ฆฌ๋ ๋ค๋ฅธ ์ข ๋ฅ์ ์ธก์ ๊ฐ์ ๋นํด ๋งค์ฐ ๊น๋ค๋กญ์ต๋๋ค. ๊ฐ์๋๊ณ๋ ์๋๊ณ์ ๊ฐ์ ์ ํต์ ์ธ ์ธก์ ์ฅ์น๋ ํ๊ฐ์ ํน์ ํ ๋ฌผ๋ฆฌ๋์ ์ธก์ ํ์ง๋ง, ์นด๋ฉ๋ผ์ ์ํด ์ฃผ์ด์ง ๊ทธ๋ฆผ ์ธก์ ์น๋ ๋ฌด์์ ์๊ณ ์ถ์ผ๋์ ๋ฐ๋ผ์ ๋ค์ํ ๋ฌผ๋ฆฌ๋์ ๋ฝ์๋ผ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ๊ฐ์ ์ ์ผ๋ก ๊ทธ๋ฆผ์์ ์๊ณ ์ถ์ ๋ฌผ๋ฆฌ๋์ ์ถ์ถํด ๋ด๋๊ฒ์ ๋๋๋ก ๋งค์ฐ ์ฑ๊ฐ์ค๋ฌ์ด ์ผ์ ๋๋ค.ย
์ค์ํ ๊ฒ์ ์ง๋ 20์ฌ๋ ๊ฐ ์ปดํจํฐ ๊ณ์ฐ ์๋๋ ๋งค์ฐ ๋นจ๋ผ์ ธ์, ๊ทธ์ ์ ์๊ฐ์ด ๋๋ฌด ๋ง์ด ๊ฑธ๋ ค์ ํ ์ ์์๋ ๊ทธ๋ฆผ ์๋ฃ ํด์์ด ๊ฐ๋ฅํด ์ก๋ค๋ ๊ฒ์ ๋๋ค. ๋๋ถ๋ถ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ํ ๊ทธ๋ฆผ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ด python ํจ์ ๋ชจ์์ง, scipy์ skimage์ ๊ตฌํ๋์ด์์ต๋๋ค.
๊ทธ๋ฆผ์๋ฃ ์ฒ๋ฆฌ๋ฅผ ํตํด์ ์ป์ด์ง ์ธก์ ์น์ ์ข๊ณ ๋์จ์ ๊ฑฐ์ ์ ๋์ ์ผ๋ก ์ฒ์ ์ฃผ์ด์ง ๊ทธ๋ฆผ์ ์ฑ์ง๊ณผ ์ป์ผ๋ ค๊ณ ํ๋ ์ธก์ ์น์ ๋ช ํํ ์ ์์ ์กด์ฌ ์ฌ๋ถ์ ๋ฌ๋ ค์์ต๋๋ค. ์์ ์ฒ์๋ถํฐ ๊ทธ๋ฆผ์ด ์ข์ง ์๊ฑฐ๋, ๊ทธ๋ฆผ์์ ์ถ์ถํ๋ ค๋ ์ ๋ณด๊ฐ ๋งค์ฐ ๋ฏธ์ธํ ์ฑ์ง์ด๋ผ๋ฉด ๋ฌธ์ ๊ฐ ๋งค์ฐ ๋ณต์กํด ์ง๋๋ค. ์๋ฅผ๋ค๋ฉด ์์ฒ์ฅ์ ์ฌ์ง์์ ํฅ๋ฏธ๋ก์ด ์ฌ์ง์ ์ถ์ถํ๋ค๋ผ๊ณ ํ๋ฉด, ํฅ๋ฏธ๋กญ๋ค๋ ๊ฒ ์์ฒด๊ฐ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ ํํ๊ฒ ์ ์ํ๊ธฐ๊ฐ ์ฝ์ง ์์์ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ตฌํํ๊ธฐ๊ฐ ์ฝ์ง ์์ต๋๋ค.ย
๊ทธ๋ฆผ์ ์ข๊ณ ๋์จ์ ๋ฐ๋ฅธ ๋ฌธ์ ๋ ๋ฏธ๋ฆฌ ์ฒ๋ฆฌ๋ฅผ ์ข ํด์ฃผ๋ฏ๋ก์จ ํด๊ฒฐํ ์ ์์ต๋๋ค. ํ๋ก๊ทธ๋จ์ ์๋ก ์ง๊ฑฐ๋, ์ด๋ฏธ ๊ตฌํ๋์ด์๋ ํจ์๋ชจ์์ง์ ์๋ ๊ธฐ๋ฅ์ ์ธ๋, ํ ์ ์์ผ๋ฉด ๋ฏธ๋ฆฌ ์ฒ๋ฆฌ๋ฅผ ํด์ ๊ทธ๋ฆผ์ ์ข ๋ ๋ช ํํ๊ฒ ๋ง๋ค ํ์๊ฐ ์์ต๋๋ค.
์ด๋ ๊ฒ ๋ฏธ๋ฆฌ ์ฒ๋ฆฌํ๋ ๊ฒ์กฐ์ฐจ ์๋ํ์ํฌ ์ ์์ง๋ง, ์์ง๊น์ง ํ๋ ค๊ณ ํ๋ ๋ฌธ์ ์ ์ ๋ฌธ๊ฐ๋ณด๋ค ๋ ๋๋ํ ํ๋ก๊ทธ๋จ์ ๊ทธ๋ ๊ฒ ๋ง์ง ์์ต๋๋ค.ย
(์ด ๋ถ๋ถ์ ์์์ ๋งํ ๋๋ฒ์งธ ๋ฌธ์ , ์ฆ ์ธก์ ์น ์ ์์ ๋ช ํ์ฑ ๋ฌธ์ ์ ๋น์ทํ๋ฐ... ๋์ค์ ์๊ฐ์ด ๋๋ฉด ๊ธฐ๊ณํ์ต์ด๋ผ๋ ๋ถ์ผ์ ๋ฌธ์ ๋ฅผ ๋ค๋ฃฐ๋ ํ๋ฒ ๊ฒฝํํ ์ ์์๊ฒ ๊ฐ์ต๋๋ค)
์ฌ๋ฌ๊ฐ์ง ํ๋ก๊ทธ๋จ์ด ์๊ฒ ์ง๋ง ์ด๋ ๊ฒ ๊ทธ๋ฆผ์ ๋ฏธ๋ฆฌ ์ฒ๋ฆฌํ๋๋ฐ ๋งค์ฐ ์ ์ฉํ ํ๋ก๊ทธ๋จ์ด ImageJ์ ๋๋ค.
http://imagej.net/
์ด ํ๋ก๊ทธ๋จ์ผ๋ก ๋์์ ํ์ผ์ ์ฝ์ ํ ๋ช ์, ๋ฐ๊ธฐ๋ฑ์ ์กฐ์ ํด์ ์๊ณ ๋ฆฌ๋ฌ์์ ์ฒ๋ฆฌํ๊ธฐ ์ฝ๋๋ก ์์์ ๋ง๋ ํ ์ฌ๋ฌ๊ฐ์ tif ํ์ผ๋ก ์ ์ฅํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ์ ์ฅ๋ tif ํ์ผ์ python์์ ์ฝ์ ์ ์์ต๋๋ค. ย
์ฆ, ๋ค์๊ณผ ๊ฐ์ ๋์์ ํ์ผ์ด avi ์์์ผ๋ก ์์๋
(์ด ๊ทธ๋ฆผ์ C.elegans๋ผ๊ณ ๋ถ๋ฆฌ์ฐ๋ ์ ์ถฉ์ ์์ง์์ ํ๋ฏธ๊ฒฝ์ผ๋ก ๋ณธ ๋์์์ ํ ์ฅ๋ฉด์ ๋๋ค. ์์์ ๋๊ตฌ๊ฒฝ๋ถ๊ณผํ๊ธฐ์ ์์ ๊น๊ทํ ๊ต์๋ ์คํ์ค (http://home.dgist.ac.kr/khkim/) ์์ ์ ๊ณตํ๊ฒ์ผ๋ก ์ฌ์ฉํ๊ฐ๋ฅผ ํด์ฃผ์ ๊ฒ์ ๋ํด ๋งค์ฐ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.)
์์ ์์์ ImageJ์์ ์ฝ์ ํ ๋ฐ๊ธฐ์ ๋ช ์์ ์กฐ์ ํด์ ๋ค์๊ณผ ๊ฐ์ด ๋ง๋ ํ tif ํ์ผ๋ก ์ ์ฅํฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋ฐฐ๊ฒฝ๊ณผ ์ ์ถฉ์ ๋ชธ์ฒด๊ฐ ํ์คํ ๊ตฌ๋ณ๋์ด์ ๋ชธ์ ๊ฒฝ๊ณ์ ์ ์ฐพ์๋ด๋ ๊ฒ์ด ์ฌ์์ง๋๋ค.
์๋ ๋งํฌ์์ ํ๋ก๊ทธ๋จ๊ณผ ๊ทธ๋ฆผ ํ์ผ์ ๋ฐ์์ ์คํํด๋ณด์ธ์.
https://gist.github.com/myjr52/64b8b80da1e2b4efedde
์์ธํ ์ค๋ช ์ ๋ค์๋ฒ์ ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ณตํ์๋ฅผ ์ํ Python ์ฌ์ฉ๋ฒ 17
์ด๋ฒ์๋ ์ฐธ๊ณ ๋ก ๋ณผ ์ ์๋ ๋ช๊ฐ์ง ์๋ฃ๋ฅผ ์๊ฐํ๋ ์งง์ ๊ธ์ ๋๋ค. ์ธํฐ๋ท์ python์ ๊ดํ ์๋ฃ๋ ๋งค์ฐ ๋ง์์ ์ด๋ค๊ฒ ์ ๋นํ์ง ํ๋จํ๋๊ฒ์ด ์์ฃผ ์ฌ์ด์ผ์ ์๋๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก, ์๋์ ์ ๊ฐ ์ถ์ฒํ๋ ์๋ฃ๋ ์ ์ ๋งค์ฐ ๊ฐ์ธ์ ์ธ ์ ํ์ ๋๋ค.
๋ฏธ์์ค๋ฝ๊ฒ๋ ์ถ์ฒ ์๋ฃ๊ฐ ๋ชจ๋ ์์ด๋ก ๋์ด์์ต๋๋ค. ์์ด ๋ฌธ์์ ์ต์ํ์ง ์๋ค๋ฉด ๋งค์ฐ ๋ถํธํ ์ ์์ต๋๋ค. ์ฌ์ค ์ ๊ฐ ์ด ๊ธ์ ์ฐ๊ธฐ ์์ํ ์ด์ ๋ ์์ด๋ฌธ์์ ์ต์์น ์์ ํ๊ตญ์ด ์ฌ์ฉ์๋ฅผ ์ํ ์๋ฃ๊ฐ ๋ถ์กฑํ๋ค๋ ๊ฒ์ด์์ต๋๋ค.
์ข ๋ ๋ง์ ์ฌ๋๋ค์ด ์์ด๋ก ๋์ด์๋ ์๋ฃ๋ฅผ ํ๊ตญ์ด๋ก ์ฎ๊ธฐ๋ ํน์ ์์ ์ ์ง์์ ํ๊ตญ์ด๋ก ์ฎ๊ธฐ๋ ์์ ์ ํ๊ธฐ๋ฅผ ๊ฐ์ธ์ ์ผ๋ก ๋ฐ๋๋๋ค.
1) ๊ณตํ๋ถ์ผ์์ python์ ์ฌ์ฉํ๋ค๋ฉด ์ด ๋ฌธ์๊ฐ ๋งค์ฐ ํ๋ฅญํฉ๋๋ค. ์๋ ๋งํฌ์ ์๋ pdfํ์ผ์ด๋ html ๋งํฌ๋ฅผ ๋๋ฅด์ธ์
http://kitchingroup.cheme.cmu.edu/pycse/
2) ๊ณตํ ๋ฌธ์ ๋ ๊ณผํ ๋ฌธ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๊ณ python ์ธ์ด์ ์ผ๋ฐ์ ์ธ ๊ธฐ๋ฅ์ ๋ํด ๊ณต๋ถํ๊ณ ์ถ์ผ์๋ค๋ฉด dive in python. ์ด ๋ฌธ์๋ ๊ตฌ๊ตฌ์ ์ ์ด for-loop๊ฐ ์ด์ฉ๊ตฌ while์ด ์ด์ฉ๊ตฌ ํ๋ ์ค๋ช ์์ด ๋ฐ๋ก python ํ๋ก๊ทธ๋จ์ ์ ์ํ๊ณ ํ์ค ํ์ค ์ค๋ช ํด๋๊ฐ๋๋ค. ์ ๊ฐ ๊ทธ๋์ ํด์๋ ๋ฐฉ์์ ์ค๋ช ๋ ์ด ์๋ฃ์์ ๋ฐฐ์ด ๊ฒ์ ๋๋ค.
http://www.diveintopython3.net/
3) ์์ ๋ ์๋ฃ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ์ ๋ ์๋ค๋ ๊ฐ์ ์์ ์ถ๋ฐํฉ๋๋ค. ๊ทธ๋์, ํ๋ก๊ทธ๋จ์ ์ ํ ํด๋ณธ์ ์ด ์๋ ์ฌ๋์ ์๋ง ๋ฐ๋ผ๊ฐ๊ธฐ๊ฐ ํ๋ค ์๋ ์์ต๋๋ค. python์ผ๋ก ์ฒ์ ํ๋ก๊ทธ๋จ ์ง๋๊ฑธ ๋ฐฐ์ฐ๋ ค๊ณ ํ๋ค๋ฉด ๋ค์ ์๋ฃ๋ฅผ ์๋ํด๋ณด๋ ๊ฒ์ด ์ข์๊ฒ๋๋ค.
http://www.greenteapress.com/thinkpython/
4) matplotlib๋ ๊ทธ๋ฆผ๊ทธ๋ฆฌ๋๋ฐ ์ฌ์ฉ๋๋ ํจ์ ๋ชจ์์ง์ธ๋ฐ ๊ทธ ๋ด์ฉ์ด ๋งค์ฐ ๋ฐฉ๋ํฉ๋๋ค. ์๋ ์๋ฃ์์ ํน๋ณํ ๋ค์ชฝ์ ์๋ ์์ ๊ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ๋งํฌ์ ์๋ pdf ํ์ผ์ ๋ฐ์ผ๋ฉด ๊ฑฐ๊ธฐ์์ 3์ฅ, 4์ฅ์ ์ฝ์ผ๋ฉด ๊ธฐ๋ณธ ์ฌ์ฉ์ ๋ฌธ์ ๊ฐ ์์๊ฒ๋๋ค. ํน๋ณํ ์ด๋ค ๊ธฐ๋ฅ์ ํ๋ ํจ์๋ฅผ ์ฐพ์๋๋ ๋ค์ชฝ III์ ์ ์๋ ์์ ๊ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
http://matplotlib.org/contents.html
(matlab ์ฌ์ฉ์๋ฅผ ์ํ์ฌ)
๋ง์ง๋ง์ผ๋ก matlab์ ์ด์ญ์ฌ๋ ๋๊ฒ ์ฌ์ฉํ ์ฌ๋์ผ๋ก์ ์ง๋ 12์๋ถํฐ ๋๋ฌ ์ฑ ๋ชป๋๋ ๊ธฐ๊ฐ๋์ python์ numpy, scipy ๊ทธ๋ฆฌ๊ณ matplotlib๋ฅผ ์กฐํฉํ์ฌ ์ฌ์ฉํด๋ณด์๋๋ฐ.. ์์น ์ฒ๋ฆฌ์ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๋ ๊ธฐ๋ฅ์ ์์ด์ matlab์ ๊ฒฐ์ฝ ๋ค์ง์ง ์์ต๋๋ค. ํ์คํ(!!!) matlab m-script๋ python์ผ๋ก ์๋ฒฝํ๊ฒ ๋์ฒด ๊ฐ๋ฅํฉ๋๋ค.
๊ทธ๋ฟ์๋๋ผ python์ matlab์ด ์ค์ง ์์น ์๋ฃ ์ฒ๋ฆฌ์ ๋งค์ฐ ํ์ ๋์ด ์๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ(์ต๊ทผ์ ๋ค๋ฅธ ์๋ฃ ์ฒ๋ฆฌ๋ ํ๋๋ก ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๊ณ ์๋๊ฒ ๊ฐ๊ธฐ๋ ํฉ๋๋ค) ์ผ๋ฐ์ ์ธ ๋ฌธ์์ฒ๋ฆฌ๋ ๋ค์ํ ํํ์ ์๋ฃ ์ฒ๋ฆฌ์ ๋งค์ฐ ๋ฐ์ด๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋๋ถ์ด python์ ์์ ํ ๊ณต์งํ๋ก๊ทธ๋จ์ ๋๋ค. ํ๊ต์ ์์๋ ์ฌ์ฉํ๋ ํ์ํ์ด๋ ๊ต์ก์ฉํ matlab๊ณผ ๋ฌ๋ฆฌ ๋์ค์ ํ์ฌ์ ์ทจ์ ํ์๋ ์ฌ์ฉํ๊ฒ๋ matlab ์์ฉํ์ ๊ฐ๊ฒฉ์ ์์ ๋ชปํ ์ ๋๋ก ๋น์๋๋ค. python์ ์ฌ์ฉํจ์ผ๋ก์จ ์ป์ด์ง ๋น์ฉ์ ๊ฐ์ ํ๋ฒ ์๊ฐํด ๋ด์ผ ํ ๊ฒ์ ๋๋ค.
๊ณตํ์๋ฅผ ์ํ Python ์ฌ์ฉ๋ฒ 16
์ด๋ฒ์๋ ์ง๋๋ฒ์ ์ด์ด์ ์๋ ํ๋ก๊ทธ๋จ์ ์๋ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๋ ๋ถ๋ถ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
https://gist.github.com/myjr52/141fbdee383c86a47999
plt.ion() ๋ผ๋ ํจ์๋ฅผ ์ค๋ช ํ๊ธฐ ์ ์ ๋จผ์ plt.ioff()๋ฅผ ๋จผ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ์ด ํจ์์์ ioff๋ย interactive-off๋ฅผ ๋ฐ์ ๋ถ์ธ ์ด๋ฆ์ ๋๋ค. ์ฆ, ์ด ํจ์๋ฅผ ์คํ์ํค๊ณ ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ด
plt.plot([1,2,3])
ํด๋ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฐ ์ฐฝ์ด ๋ํ๋์ง ์์ต๋๋ค. ์ฆ๊ฐ์ฆ๊ฐ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ ๊ธฐ๋ฅ์ ๊ป๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ๋ฒ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋๋ฐ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ๋ฐ์ดํ๋ฅผ ๊ฐ์ง๊ณ ์์๋, ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ์ ์ํ์ถ์ ์ด๋ฆ ๋ถ์ด๊ณ (plt.xlabel()), ์์ง์ถ์ ์ด๋ฆ๋ถ์ด๊ณ (plt.ylabel()) ๋ฑ๋ฑ์ ์คํํ๋๊ฒ ๋ณด๋ค๋; ๊ทธ๋ฆผ์ ๊ด๋ จ๋ ๋ชจ๋ ๋ช ๋ น์ ์ผ๋จ ์คํ์ํค๊ณ ๋์ค์ ํ๋ฒ์ ๋ค ๊ทธ๋ฆฌ๋๊ฒ์ด ์๊ฐ์ด ์ ์ฝ๋ฉ๋๋ค. ์ฆ, ์์๋..
plt.ioff()
๊ทธ๋ฆผ์ ๊ด๋ จ๋ ๋ชจ๋ ๋ช ๋ น์ ์ฌ๊ธฐ์ ๋ค ์คํํ ํ
....
plt.show()ย
ํ๋ฉด ์ต์ข ์ ์ผ๋ก ๊ทธ๋ฆผ์ ํ๋ฒ๋ง ๊ทธ๋ฆฌ๊ฒ ๋ฉ๋๋ค.
์ด์ ๋ฐ๋๋ก ๊ทธ๋ ๊ทธ๋ ๊ทธ๋ฆผ์ ๊ฐฑ์ ํ๊ณ ์ถ์ผ๋ฉด plt.ion()ํ๋ฉด ๋ฉ๋๋ค. ย ์๋ง๋ ๊ทธ๋ ๊ทธ๋ ๊ฐฑ์ ํ๋ ๊ธฐ๋ฅ์ด ์ผ์ ธ์๋๊ฒ์ด ๊ธฐ๋ณธ ์ค์ ์ผ๊ฒ๋๋ค.
์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ 3์ฐจ์ ์์๋ฅผ ๋๋ฆฌ๋ ํจ๊ณผ๋ฅผ ๋ณด๋ ค๊ณ ํ๋๊ฒ์ด๋ฏ๋ก ๊ทธ๋ ๊ทธ๋ ๊ฐฑ์ ๊ธฐ๋ฅ์ ํ์คํ ์ผ๋๊ธฐ ์ํด plt.ion()์ ์คํํ์ต๋๋ค.
๊ทธ๋ฆผ ์ฐฝ์๋ ๋ฒํธ๊ฐ ๋ถ๋๋ฐ; ๋ค์๊ณผ ๊ฐ์ด 1๋ฒ ๊ทธ๋ฆผ์ฐฝ์ ์ด์์ต๋๋ค.
fig ย = plt.figure(1)
๊ทธ๋ฆฌ๊ณ 3์ฐจ์ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๊ธฐ ์ํด์
ax = fig.add_subplot(111, projection='3d')
๊ทธ๋ฆผ์ฐฝ fig์ '3d' ์ค์ ์ ์์ ๊ฐ์ด ํ์ต๋๋ค.ย
(๋ถํํ๊ฒ๋ matplotlib์ 3์ฐจ์ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๋ ๊ธฐ๋ฅ์ ๊ทธ๋ ๊ฒ ํ๋ฅญํ์ง ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ธ ๊ทธ๋ฆผ์ ๊ฐ๋ฅํ์ง๋ง ๋งค์ฐ ๋ณต์กํ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๊ธฐ์๋ ์์ง ๋ฏธํกํ ์ ์ด ์์ต๋๋ค. 3์ฐจ์ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๋๋ฐ ๋งค์ฐ ํ๋ฅญํ ํจ์ ๋ชจ์์ง์ผ๋ก mayavi๋ผ๋ ๊ฒ์ด ์๋๋ฐ์.
http://docs.enthought.com/mayavi/mayavi/mlab.html
์ํ๊น๊ฒ๋ ์ด ํจ์๋ชจ์์ง์ ์์ง python 3๋ก ๊ตฌํ๋์ง ์์์ต๋๋ค. ์ด ํจ์๋ชจ์์ง์ ์ฐ๊ณ ์ถ์ผ๋ฉด python 2.7์ ์ฌ์ฉํด์ผํฉ๋๋ค.)
for-loop ์์์ ๋ค์๊ณผ ๊ฐ์ด ์์๋ฅผ ๊ทธ๋ฆฐ ํ
ax.plot(XYZ1[0],XYZ1[1],XYZ1[2],'b.') ax.plot(XYZ2[0],XYZ2[1],XYZ2[2],'r.') ax.plot(XYZ3[0],XYZ3[1],XYZ3[2],'g.')
3์ฐจ์ ๊ทธ๋ฆผ์ ๋ณด๋ ๊ฐ๋์ ๊ฐ ์ถ๋ณ๋ก ์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ ์ง์ ํ ํ
ax.view_init(30, 30) ax.set_xlim3d(-0.5,0.5) ax.set_ylim3d(-0.5,0.5) ax.set_zlim3d(-0.5,0.5)
๋ค์๊ณผ ๊ฐ์ด ํ๋ฉด ์์ ์ค์ ์ด ์ ์ฉ๋ฉ๋๋ค.
plt.draw()
๊ทธ๋ฆผ์ ๊ทธ๋ฆฐ ๋ค์์ย
plt.pause(0.01)
ํ๋ฉด 0.01์ด ๋์ ํ๋ก๊ทธ๋จ์ด ๋ฉ์ถ๊ฒ ๋๋๋ฐ, ์ด๋ ๊ฒ ํ๋ ์ด์ ๋ ๊ทธ๋ฆผ์ด ํ๋ฉด์์ ๊ฐฑ์ ๋๋ ์๊ฐ์ ์ฃผ๊ธฐ ์ํด์ ์ ๋๋ค. ์ด๋ค ์ด์ ์ธ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง Mac OS X์์๋ pause ํ์ง ์์๋ ๊ทธ๋ฆผ์ด ์ ๊ฐฑ์ ๋๋๋ฐ Linux CentOS์์๋ ์ด ๋ช ๋ น์ ๋ฃ์ง ์์ผ๋ฉด ๊ทธ๋ฆผ์ด ์ ํ ๋ฐ๋์ง ์์์ต๋๋ค.
์๋ญ๋ ์ด๋ ๊ฒ ์ปดํจํฐ OS๊ฐ ๊ทธ๋ฆผ์ ๋ฐ๊ฟ ์๊ฐ์ ์ค ํย
ax.clear()
ํ๋ฉด, ๋ค์์ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ ๋ช ๋ น์ด ์คํ๋ ๋, ๊ทธ ์ ๊ทธ๋ฆผ์ ์ง์๋๋ค.
์์์๋ ๋งํ์ง๋ง matplotlib๊ฐ 3์ฐจ์ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๋๋ฐ๋ ํจ์ ๊ธฐ๋ฅ์ด ์ข ๋ถ๋ง์กฑ์ค๋ฝ๊ณ , ๊ตฌํ๋์ด์๋ ํจ์๋ ๋ถ์์ ํฉ๋๋ค. ์ด ํ๋ก๊ทธ๋จ๋ ์ ๊ฐ MacBook์ ๊น๋ ค์๋ Anaconda์์๋ ์ ์คํ์ด ๋๋๋ฐ, Linux CentOS์์๋ ๊ทธ๋ฆผ์ด ๊ฐฑ์ ์ด ๋์ง ์์์ ์์ง์ด๋ ํจ๊ณผ๋ฅผ ๋ณผ ์๊ฐ ์์์ต๋๋ค.
์ ํํ ์ด๋ค ์ด์ ์ธ์ง๋ ์ ์ ์์ต๋๋ค๋ง, matplotlib์ 3์ฐจ์ ๊ทธ๋ฆผ์ ์๋ ์์ฒด ๋ฌธ์ ๊ฐ ์๋๊ฐ ์๊ฐํฉ๋๋ค.
๊ณตํ์๋ฅผ ์ํ Python ์ฌ์ฉ๋ฒ 15
์ง๋๋ฒ์ ์คํํด ๋ณด์๋ 3์ฐจ์ ๊ณต๊ฐ์์ ์์๋ฅผ ๊ทธ๋ฆฌ๊ณ , ๊ทธ๊ฑธ ํ์ ์ํค๋ ์๋ ํ๋ก๊ทธ๋จ์ ํด์ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
https://gist.github.com/myjr52/141fbdee383c86a47999
3์ฐจ์ ๊ณต๊ฐ์์ ํ์ ํ๋ ๋ฌผ์ฒด์ ๊ฐ์๋ ๋ฒกํฐ๊ฐ ${\boldsymbol\omega}$๋ผ๋ $3\times 1$ ๋ฒกํฐ๋ก ์ฃผ์ด์ก์๋, ๋ฐฉํฅ ์ฝ์ฌ์ธ ํ๋ ฌ์ ๋ฏธ๋ถ ๋ฐฉ์ ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$$\dfrac{dC}{dt} = - [{\boldsymbol\omega}\times] C$$
์ฌ๊ธฐ์
$$[{\boldsymbol\omega}\times] =ย \begin{bmatrix} 0 & -\omega_3 & \omega_2\\\ \omega_3 & 0 & -\omega_1\\\ -\omega_2 & \omega_1 & 0 \end{bmatrix}$$
์ด๊ณ , $\omega_1$, $\omega_2$, $\omega_3$๋ ๊ฐ๊ฐ $x$, $y$, $z$ ์ถ ๋ฐฉํฅ ๊ฐ์๋์ ๋๋ค. ์์ ๋ฐฉ์ ์์ ํ๋ ฌ ๋ฏธ๋ถ ๋ฐฉ์ ์์ ๋๋ค. $C$๋ ๋ฐฉํฅ์ฝ์ฌ์ธ ํ๋ ฌ์ ํํํ๋ $3\times 3$ ํ๋ ฌ์ ๋๋ค.
๊ทธ๋ฐ๋ฐ, scipy๋ฅผ ํฌํจํด์ ๋๋ถ๋ถ์ ์์น์ ๋ถ๊ธฐ๋ ๋ฒกํฐ ๋ฏธ๋ถ ๋ฐฉ์ ์์ ์ ๋ถํ๋๋ก ๋์ด์์ด์, ํ๋ ฌ ๋ฏธ๋ถ ๋ฐฉ์ ์์ ์ง์ ๊ทธ ํํ๋ก ๋ฏธ๋ถํ์ง ๋ชปํฉ๋๋ค. ๊ทธ๋์, ์๋์ ๊ฐ์ด ๋ฏธ๋ถ ๋ฐฉ์ ์์ ์ ์ํ ๋
def DCM_ode(state, t)
state๊ฐ $C$์ ๊ฐ์ 9์ฐจ์ ๋ฐฐ์ด๋ก ๊ฐ์ง๊ณ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ํจ์ ์ ์ ๋ด๋ถ์์ ์ด 9์ฐจ์ ๋ฐฐ์ด์ ๊ฐ์ง๊ณ ์์ ๋ฏธ๋ถ ๋ฐฉ์ ์์ ๊ตฌํํ ์๋ ์์ง๋ง, ๋ฏธ๋ถ ๋ฐฉ์ ์ ์์ฒด๊ฐ ํ๋ ฌ๋ก ๊ตฌํ๋์ด์์ผ๋ฏ๋ก,
๋ค์๊ณผ ๊ฐ์ด, 9์ฐจ์ ๋ฐฐ์ด์ ๋ค์ ํ๋ ฌ๋ก ๊ตฌ์ฑํ์ฌ
DCM = state.reshape(3,3)
์ฌ๊ธฐ์ state๋ 9์ฐจ์ ๋ฐฐ์ด์ด๊ณ , ์ด๋ฅผ reshape ํจ์๋ฅผ ์จ์ $3\times 3$ํ๋ ฌ๋ก ๋ง๋ค์์ต๋๋ค.
๊ทธ ๋ค์ ํ๋ ฌ ๋ฏธ๋ถ ๋ฐฉ์ ์์ ๊ตฌ์ฑํ๊ธฐ ์ํด, ๋ค์๊ณผ ๊ฐ์ด $[{\boldsymbol\omega}\times]$๋ฅผ ๊ตฌ์ฑํ๊ณ ๋ ํ
wx = np.array([[ 0, -w3, w2],ย [ w3, 0, -w1],ย [-w2, w1, 0]])
์๋์ ๊ฐ์ด $dC/dt$๋ฅผ ๊ณ์ฐํฉ๋๋ค.
dDCM_dt = -np.dot(wx,DCM)
ํจ์๋ ๋ค์ ๋ฒกํฐ๋ฅผ ๋๋ ค์ค์ผ ํ๋ฏ๋ก, ๋ค์๊ณผ ๊ฐ์ด dDCM_dt๋ฅผ 9์ฐจ์ ๋ฐฐ์ด๋ก ๋ฐ๊พธ์์ต๋๋ค.
f = dDCM_dt.reshape(9)
(์ฐธ๊ณ ๋ก matlab ์ฌ์ฉ์๋ฅผ ์ํด์) matlab๊ณผ python์์ 2์ฐจ์ ํ๋ ฌ์ 1์ฐจ์ index๋ฅผ ๋ถ์ด๋ ์์๊ฐ ๋ค๋ฆ ๋๋ค. ์๋ฅผ ๋ค๋ฉด,
A = np.array([[1,2,3],[4,5,6]])
A.reshape(1,6)
ํ๋ฉดย
array([[1, 2, 3, 4, 5, 6]])
์ ๋๋ค. ์ฆ 1ํ๋ถํฐ ์์ํด์ 2ํ์ ๊ทธ ๋ค์ ๋ถ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐ์ ํ๋ ฌ์ matlab์์ ๋ง๋ค๊ณ reshape(A,1,6)ํ๋ฉด [1 4 2 5 3 6]๊ณผ ๊ฐ์ด 1์ด๋ถํฐ ์์ํด์ 2์ด์ ๋ถ์ด๊ณ , 3์ด์ ๋ถ์ด๊ณ ๊ทธ๋ฆฌ๊ณ 4์ด์ ๋ถ์ ๋๋ค.
์ฐธ๊ณ ๋ก python์์๋ A[0] ํ๋ฉด matlab์์ A(1)์ ํด๋นํ๋ค๊ณ ์๊ฐํ์ฌ 1 ์ด๋ผ๊ณ ์๊ฐํ๊ธฐ ์ฌ์ด๋ฐ, A[0]๋ ์ฒซ๋ฒ์งธ ํ, [1,2,3] ์ ๋๋ค. A[1]์ ๋๋ฒ์งธ ํ [4,5,6]์ด๊ณ ์.ย
๊ทธ๋ฌ๋ฉด ๋๋ฒ์งธ ์ด์ ๋นผ๋ด๊ณ ์ถ์ผ๋ฉด ์ด์ฐํด์ผ ํ ๊น์. ๊ทธ๊ฑด matlab์์์ ๋น์ทํ๊ฒ A[:,1]ํ๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ์ฌ์ค, ํ๋ ฌ์ 1์ฐจ์ ๋ฐฐ์ด๋ก ๋ฐ๊พธ๊ณ ๊ทธ๊ฑธ ๋ค์ ํ๋ ฌ๋ก ๋ฐ๊ฟ์ ์ฐ์ฐ์ ํ ๋ ์ด๋ ํํ๋ก ๋ณํ๋๋์ง ๊ตณ์ด ์ ํ์๋ ์์ต๋๋ค. python์์ ๋ค ์์์ ์ผ๊ด๋๊ฒ ๋ฐ๊ฟ์ค๊ฒ์ ๋๋ค.
๋จ์ง, ๊ตฌ์ฒด์ ์ผ๋ก ๋ชํ ๋ช์ด์ ์๋ ๊ฐ์ ๋ฐฐ์ด์์ ์ฐพ์๋๋ ๊ทธ๊ฒ ์ด๋ป๊ฒ ์ ํ๋๋์ง ์๊ณ ์์ด์ผ ๊ฒ ์ฃ . ํ์ง๋ง, ์์ ํจ์์์ ์ฒ๋ผ ์๋ ํ๋ ฌ์ด ๋ฐฐ์ด๋ก ๋ฐ๋ ๋ณ์๊ฐ ๋ค์ด์ค๊ณ , ๊ทธ๊ฑธ ํจ์์์์ ๋ค์ ํ๋ ฌ๋ก ๋ฐ๊พธ์ด ์ฐ์ฐํ ๋๋ ๊ทธ๋ฅ ํฌ๊ธฐ๋ง ๋ง์ถฐ์ reshape ํด์ฃผ๋ฉด ๋ฉ๋๋ค. ๊ตณ์ด ์ด๋ ๊ฐ์ด ์ด๋๋ก ๊ฐ๋์ง ์ ํ์๋ ์์ต๋๋ค.ย
"# construct box" ๋ถ๋ถ์ ์ง์ก๋ฉด์ฒด ๊ฐ ๋ชจ์๋ฆฌ๋ฅผ 100๊ฐ์ ์ ์ผ๋ก ํํํ๋ ๋ถ๋ถ์ ๋๋ค.
3์ฐจ์ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๋ ๋ถ๋ถ์ ๋ค์ํ์์ ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch โข No registration required โข HD streaming
๊ณตํ์๋ฅผ ์ํ Python ์ฌ์ฉ๋ฒ 14
์ด๋ฒ์๋ ๊ทธ ๋์ ํด๋ณด์ง ์์๋ 3์ฐจ์ ๊ณต๊ฐ์ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ๊ณผ ์ด ๊ทธ๋ฆผ์ ์ง์ฐ๊ณ ๋ค์ ๊ทธ๋ฆฌ๋๊ฒ์ ๋ฐ๋ณตํด์ ๋ง์น ์์ง์ด๋ ๊ฒ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ด๋ ํ๋ก๊ทธ๋จ์ ์ง ๋ณด๊ฒ ์ต๋๋ค.
ํ๋ก๊ทธ๋จ์ ์๋์์ ๋ฐ์ ์ ์์ต๋๋ค.
https://gist.github.com/myjr52/141fbdee383c86a47999
์ด ํ๋ก๊ทธ๋จ์ ์ง์ก๋ฉด์ฒด ๋ชจ์๋ฆฌ๋ฅผ ์ ์ํ๋ ์ ์ ๋จผ์ ์์ฑํ ํ, ์ด ์ ์ ์ด์ฉํด ์ง์ก๋ฉด์ฒด๋ฅผ 3์ฐจ์ ๊ณต๊ฐ์ ์๋์ ๊ฐ์ด ๊ทธ๋ฆฝ๋๋ค.
์์์ ๊ฐ์๋๋ก ์ด ๋ฌผ์ฒด๊ฐ ํ์ ํ๋ค๊ณ ๊ฐ์ ํ๊ณ ์ด๋ฅผ ๋ฐฉํฅ ์ฝ์ฌ์ธ ํ๋ ฌ ๋ฏธ๋ถ ๋ฐฉ์ ์์ผ๋ก ํํํ์ต๋๋ค.
while ๋ฃจํ์์ ์ฃผ์ด์ง ์๊ฐ์ ์งง์ ๊ตฌ๊ฐ์ผ๋ก ๋๋ ํ, ๊ฐ ์๊ฐ๊ตฌ๊ฐ๋ง๋ค ์ ๋ถ์ ํ ๋ค์, ๋ง์ง๋ง์ ์ป์ด์ง ๋ฐฉํฅ ์ฝ์ฌ์ธ ํ๋ ฌ๋ก ์์ ๋ฌผ์ฒด๋ฅผ ํํํ๋ ์ ๋ค์ ํ์ ํ ์ขํ๋ฅผ ๊ตฌํ ํ, ์์ ๊ทธ๋ฆผ์ ์ง์ฐ๊ณ ๋ค์ ๊ทธ๋ฆฌ๋๊ฒ์ ๋ฐ๋ณตํฉ๋๋ค.ย
์ด๋ ๊ฒ ํ๋ฉด ๋ง์น ์์ ๋ฌผ์ฒด๊ฐ ๊ณต๊ฐ์์ ํ์ ํ๋ ๋ฏํ ํจ๊ณผ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์์ธํ ํ๋ก๊ทธ๋จ ํด์์ ๋ค์์ ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ณตํ์๋ฅผ ์ํ Python ์ฌ์ฉ๋ฒ 13
์ด๋ฒ์๋ ๋๊ฐ์ง ์์ง๊ตฌ๋ ํ ๊ธฐ์ ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
1) 2์ง์, 8์ง์, 10์ง์, 16์ง์ ๋ณํ
10์ง์ -> 2์ง์: bin(234) ํ๋ฉดย '0b11101010' ๋ผ๋ 234์ 2์ง์์ ํด๋นํ๋ ๋ฌธ์์ด(!)์ด ์ถ๋ ฅ๋ฉ๋๋ค.
10์ง์->8์ง์: oct(234)ํ๋ฉด '0o352' ์ฆ, 8์ง์์ ํด๋นํ๋ 352๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
10์ง์->16์ง์: ย hex(234)ํ๋ฉด '0xea' ์ฆ, 16์ง์์ ํด๋นํ๋ ea๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
2์ง์->10์ง์:ย int('11101010',2) ํ๋ฉด ํด๋น 10์ง์ 234๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก x์ง์์ธ yyyy๋ฅผ 10์ง์๋ก ๋ฐ๊พธ๋ ค๋ฉด int('yyyy',x)ํ๋ฉด ๋ฉ๋๋ค. ์ฃผ์ํ ์ ์ int์ ์ฒซ๋ฒ์งธ ํญ์ ํญ์ ๋ฌธ์์ด์ด๋ผ๋ ๊ฒ์ ๋๋ค.
ipython prompt์์๋ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅํ๋ฉด ์ญ์ง์๊ฐ ๋ฐ๋ก ์ถ๋ ฅ๋ฉ๋๋ค.
16์ง์ 11์ ์ญ์ง์๋ก
In [159]:ย 0x11
Out[159]: 17
2์ง์ 11์ ์ญ์ง์๋ก
In [160]:ย 0b11
Out[160]: 3
2) ํ๋ ฌํ(matrix) ์๋ฃํํ
python์์ ํ๋ ฌ์ ๋ํ๋ด๋ ์๋ฃํํ๋ ๋ฐฐ์ด (array)์ ๋๋ค. ๋ฐฐ์ด๋ก ํํ๋ ๋ ํ๋ ฌ A, B๋ฅผ A*Bํ๋ฉด ํญ๋ณ๊ณฑ์ด ๋ฉ๋๋ค. ํ๋ ฌ๊ณฑ์ ํ๋ ค๋ฉดย
import numpy as np
np.dot(A,B) ํน์ A.dot(B) ํด์ผํฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ํ๋ ฌ๊ณฑ์ด ๋งค์ฐ ๋ง๋ค๋ฉด dotํจ์๋ฅผ ์ฌ๋ฌ๋ฒ ๊ดํธ์์ ์จ์ผ ํ๋๋ฐ์. ์๋ฅผ ๋ค๋ฉด A, B, C ์ธ๊ฐ์ ํ๋ ฌ์ ํ๋ ฌ๊ณฑํ๋ ค๋ฉด
np.dot(A,np.dot(B,C)) ์๋๋ฉด A.dot(B.dot(C))
์ด๊ฑฐ ๋งค์ฐ ๊ฑฐ์ถ์ฅ์ค๋ฝ์ต๋๋ค. ์ด๋ด๋ ์ธ ์ ์๋๊ฒ array๊ฐ ์๋ matrix ์ ๋๋ค.ย
๋ค์๊ณผ ๊ฐ์ด ํ๋ฉด
A = np.random.rand(3,3)
3ํ 3์ด ๋ฌด์์ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฐฐ์ด์ด ์๊ธฐ๋๋ฐ์.
whos
ํด๋ณด๋ฉด
A ndarray 3x3: 9 elems, type `float64`, 72 bytes
๋ค์๊ณผ ๊ฐ์ด A๋ ndarray ํ์ด๋ผ๊ฒ์ ๋ณด์ฌ์ค๋๋ค.
์ด๊ฒ์ matrix ์๋ฃํ์ผ๋ก ๋ฐ๊พธ๋ ค๋ฉด
A = np.asmatrix(A)
ํ๋ฉด ๋ฉ๋๋ค. ์ฌ๊ธฐ์ whosํ๋ฉด
A matrix [[ 7.49592988e-01 6.00<...>34e-04 9.16307122e-01]]
A๊ฐ matrix๋ผ๋๊ฒ์ ๋ณด์ฌ์ค๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋กย
B = np.asmatrix(np.random.rand(3,3))
ํ ํ A*B ํ๋ฉด ์ด ๊ณฑ์ ํ๋ ฌ๊ณฑ์ ๋๋ค. ์ฆ ์๋ฃํ์ด ๋ฐฐ์ด(array)์ด ์๋ ํ๋ ฌ(matrix)์ด๋ฉด ๋ชจ๋ ์ฐ์ฐ์ด ํ๋ ฌ์ฐ์ฐ์ด ๋ฉ๋๋ค.
๋ฐฐ์ด์ ๊ฑฐ์น์ง ์๊ณ ์ฒ์๋ถํฐ ํ๋ ฌํํ๋ก ๋ง๋ค๊ณ ์ถ์ผ๋ฉด
A = np.matrix('1 2 3;4 5 6; 7 8 9')
ํ๊ณ print(A)ํ๋ฉด
[[1 2 3] [4 5 6] [7 8 9]]
๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ํ๊ฐ์ง ์๋ฌธ์ ์ ๊ฐ์ง ์ ์์ต๋๋ค. ๊ทธ๋ผ ์ฒ์๋ถํฐ ๋ถํธํ์ง ์๊ฒ ํ๋ ฌํ๋ง ์ฐ๋ฉด๋์ง ์์๊น? ์ด์ ๋ํ ๋ต์ ์์ ์ด ๋ค๋ฃจ๋ ค๊ณ ํ๋ ๋ฌธ์ ์ ๋ฐ๋ผ ๊ทธ๋ด ์๋ ์๊ณ , ์๋์๋ ์๋ค ์ ๋๋ค.
ํ๋ ฌํ์ผ๋ก๋ง ์ฐ๋ฉด ํ๋ ฌ์ฐ์ฐํ ๋ ํํ์ด ๊ฐ๋จํด์ง๊ธฐ๋ ํ์ง๋ง, ๋ง์ python ํจ์๊ฐ ๋ฐฐ์ดํํ๋ง ๋ณ์๋ก ๋ฐ์๋ค์ด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ํ๋ ฌํ์ ๋ค์ ๋ฐฐ์ดํ์ผ๋ก ๋ฐ๊พธ์ด์ผ ํ๋๋ฐ ๊ทธ ํจ์๋, ์ฝ๊ฒ ์ง์ํ ์ ์๋ฏ์ด, asarray์ ๋๋ค. ์ฆ, ์์์ ๋ง๋ ํ๋ ฌํํ์ธ A๋ฅผ ๋ฐฐ์ดํํ๋ก ๋ง๋ค๊ณ ์ถ์ผ๋ฉด, np.asarray(A)ํ๋ฉด ๋ฉ๋๋ค.
์ฐธ๊ณ ๋ก python์์๋ ํ๋ ฌํ๋ณด๋ค ๋ฐฐ์ดํ ์๋ฃํํ๋ฅผ ์ฐ๊ธฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค. ํ์ง๋ง, ์์ ์ ๋ฌธ์ ์ ํ๋ ฌ์ฐ์ฐ์ด ๋ง๋ค๋ฉด ํ๋ ฌํ์ด ๋ ์ข์ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก, ๋์ ํธ๋ฆฌํ๋๋ก ์์ด์ฐ๋๊ฒ์ด ์ข๋ค๋ผ๊ณ ๋งํ ์๋ ์์ง๋ง, ย ์์ด์ธ๋ ํ๊ฐ์ง ์กฐ์ฌํ ์ ์ ๋ ๋ฐฐ์ด์ ๊ณฑ A*B์ ๋ ํ๋ ฌ์ ๊ณฑ A*B๋ ๋งค์ฐ ๋ค๋ฅด๋ฏ๋ก ์ฃผ์ํด์ผํฉ๋๋ค.
์ ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ "ํผํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ๋ฐฐ์ด์ ํญ์ ์ฌ์ฉํ๊ณ , ๋ฐ๋์ ํ๋ ฌ์ ์ฐ๊ณ ์ถ์ ๋ถ๋ถ์ด ์์ผ๋ฉด ๋งค์ฐ ์ ํ์ ์ผ๋ก ๋ช์ค์ด๋ด์์๋ง ์ฌ์ฉํ๊ณ ๊ทธ ๋ถ๋ถ์ ํ๋ก๊ทธ๋จ์๋ ์ฌ๊ธฐ๋ ํ๋ ฌ์ ์ผ๋ค๋ผ๊ณ ์ค๋ช ๋ฌธ์ ๋์ ๋จ์ด๊ฒ ๋ฌ์๋๋๊ฒ์ด ์ข๋ค"์ ๋๋ค.
๋ ์์ธํ ๋ฐฐ์ด๊ณผ ํ๋ ฌ์ ๋ํ ๋ด์ฉ์ ์๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
http://wiki.scipy.org/NumPy_for_Matlab_Users#head-e9a492daa18afcd86e84e07cd2824a9b1b651935