Numpy: ๊ธฐ๋Šฅ ์š”์ฒญ : ์‹œ๋งจํ‹ฑ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‚ฌ์šฉ

์— ๋งŒ๋“  2017๋…„ 12์›” 04์ผ  ยท  88์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: numpy/numpy

์‹œ๋งจํ‹ฑ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ, ๋ฐฐํฌ ๋ฐ ๋ฐฐํฌ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์˜ ์ ์ ˆ์„ฑ์— ๋Œ€ํ•œ ์˜ค๋žœ ๋…ผ์˜์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  (๊ตฌ๊ธ€์€ ๊ทธ๊ฒƒ์„ ์ฐพ์„ ์ˆ˜์žˆ๋Š” ๊ณณ์„ ์•Œ๊ณ  ์žˆ์Œ) ์˜ค๋Š˜๋‚  ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค. ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉ ํ•˜์ง€ ์•Š๊ธฐ๋กœ ์˜์‹์ ์œผ๋กœ ๊ฒฐ์ •ํ•œ ํ”„๋กœ์ ํŠธ๋Š” ๋ฒ„์ „ ๋Œ€์‹  ๋‚ ์งœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด์ด๋ฅผ ์ฆ‰์‹œ ๋ช…ํ™•ํ•˜๊ฒŒํ•˜๋Š” ๋ฆด๋ฆฌ์Šค ๋ฒˆํ˜ธ ์ง€์ • ์ฒด๊ณ„๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

NumPy๋Š” ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ์ง€์ •์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์€ ๋ฒ„์ „ ๋ฒˆํ˜ธ ์ง€์ • ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋“œ๋ฌธ ์˜ˆ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋ถ€ ๋ฒ„์ „ ๋ฒˆํ˜ธ ๋งŒ ๋ณ€๊ฒฝํ•˜์—ฌ ์ •๊ธฐ์ ์œผ๋กœ ๋„์ž…๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ด€ํ–‰์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž, ์†Œํ”„ํŠธ์›จ์–ด ์‚ฌ์šฉ์ž ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฐํฌ ๊ด€๋ฆฌ์ž ์‚ฌ์ด์— ์ž˜๋ชป๋œ ๊ธฐ๋Œ€์น˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

NumPy๋Š” ์šด์˜ ์ฒด์ œ ๋˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์™€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ธํ”„๋ผ ์†Œํ”„ํŠธ์›จ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ๋”์šฑ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. NumPy๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค (๊ฐœ๋ฐœ์ž ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์‚ฌ์šฉ์ž)์€ Anaconda ๋˜๋Š” Debian๊ณผ ๊ฐ™์€ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฐํฌ๋ฅผ ํ†ตํ•ด ๊ฐ„์ ‘์ ์œผ๋กœ NumPy๋ฅผ ์–ป๊ณ  ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ์ข…์ข… ์—…๋ฐ์ดํŠธ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ์€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž์ž…๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ๋žŒ์ด๋‚˜ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์˜ํ–ฅ์„๋ฐ›๋Š” ์‚ฌ๋žŒ์€ NumPy ๋ฉ”์ผ ๋ง ๋ชฉ๋ก์„ ๋”ฐ๋ฅด์ง€ ์•Š์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„์€ ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ๋ฅผ ์ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ NumPy๊ฐ€ ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค๋ฅผ ์œ„ํ•ด ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ทœ์น™์„ ์ฑ„ํƒ ํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ทœ์•ฝ์„ ์ฑ„ํƒํ•˜์ง€ ์•Š๋Š” ํƒ€๋‹นํ•œ ์ด์œ ๊ฐ€ ์žˆ๋‹ค๋ฉด NumPy๋Š” ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ๋กœ ์ฐฉ๊ฐ ํ•  ์ˆ˜์—†๋Š” ๋ฆด๋ฆฌ์Šค ๋ผ๋ฒจ๋ง ์ฒด๊ณ„๋ฅผ ์ฑ„ํƒํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

15 - Discussion

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ˜„์žฌ NumPy ํ•ต์‹ฌ ํŒ€์€ ์•ˆ์ •์„ฑ๋ณด๋‹ค๋Š” ์ง„๋ณด (์ผ๋ถ€ ๋ถ„์•ผ์—์„œ๋Š” ์ค‘์š”ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋ถ„์•ผ์™€๋Š” ๊ฑฐ์˜ ๋ฌด๊ด€ ํ•œ ๋ฐฉํ–ฅ)์— ๋” ๊ด€์‹ฌ์„๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฏธ์•ˆํ•˜์ง€๋งŒ ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ NumPy ๊ฐœ๋ฐœ์„ ์ „ํ˜€ ๋”ฐ๋ฅด์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ๋งค์šฐ ํŠน๋ณ„ํ•œ ์•ˆ๊ฒฝ ์„ธํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. NumPy๋Š” ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์— ๋Œ€ํ•œ ๋งŽ์€ ์šฐ๋ ค๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ๊ธฐ์—ฌํ•˜๊ธฐ ๋งค์šฐ ์–ด๋ ค์šด ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์ƒˆ๋กœ์šด ๊ด€๋ฆฌ์ž๋ฅผ ์œ ์น˜ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช๋Š” ์ฃผ๋œ ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  88 ๋Œ“๊ธ€

numpy๋Š” ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์„ ํ–‰ 1 ?

๊ฑฐ์˜ ๋ชจ๋“  ํ•ต์‹ฌ ๊ณผํ•™ Python ํ”„๋กœ์ ํŠธ๊ฐ€ NumPy๊ฐ€ํ•˜๋Š” ์ผ์„ํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ๋งค์šฐ ์ง€์žฅ์„์ฃผ์ง€ ์•Š๋Š” ํ•œ ๋ช‡ ๋ฒˆ์˜ ๋ฆด๋ฆฌ์Šค ํ›„์— ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ฃผ์š” ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ฃผ์š” ๋ฒ„์ „ ๋ฒˆํ˜ธ ๋งŒ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

์ง€์› ์ค‘๋‹จ ์ •์ฑ…์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์„ ์ œ์•ˆํ•˜๋Š”์ง€ ๋˜๋Š” ์ง€๊ธˆ 1.14.09 ๋ฒ„์ „์ด ์•„๋‹Œ 14.0.0 ๋ฒ„์ „์ด์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ›„์ž : NumPy๋Š” ํ˜„์žฌ ๋Œ€๋žต ๋ฒ„์ „ 14์—์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—๋งŒ์ด ๊ทœ์น™์„ ์ฑ„ํƒ ํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

BTW : NumPy์˜ ์ „์ž„์ž ์ธ Numeric์€ ์‹œ๋งจํ‹ฑ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ  ๋Œ€๋žต 10 ๋…„์— ๊ฑธ์ณ ๋ฒ„์ „ 24์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. NumPy ๋กœ์˜ ์ „ํ™˜์—์„œ ์ด๊ฒƒ์ด ์™œ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚ด ์ธ์ƒ์€ ๋Œ€๋ถ€๋ถ„์˜ Python ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Python ์ž์ฒด๋Š” ์‹œ๋งจํ‹ฑ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (์ €๋Š” ๋˜ํ•œ semver๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ๋ฅ˜ ์šด์˜ ์ฒด์ œ ๋‚˜ ์ปดํŒŒ์ผ๋Ÿฌ์— ๋Œ€ํ•ด ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์—ผ๋‘์—๋‘๊ณ ์žˆ๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?) ์ €๋Š” semver ์ง€์ง€์ž๋“ค์ด ๋งˆ์ผ€ํŒ…์„ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ทธ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ AFAICT๋Š” ์™ผ์ชฝ ํŒจ๋“œ๋ณด๋‹ค ํฐ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ์‹ค์ œ ์„ธ๊ณ„์—์„œ ๋ณธ์งˆ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €๋Š” semver ์‚ฌ๋žŒ๋“ค์ด ์ด์ œ ์ „ํ†ต์ ์ธ MAJOR.MINOR.MICRO ํ˜•์‹์„ "์†Œ์œ "ํ•˜๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ๋ฌด์–ธ๊ฐ€๋กœ ์ „ํ™˜ํ•ด์•ผํ•œ๋‹ค๋Š” ์ƒ๊ฐ์— ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ด์˜๋ฅผ ์ œ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฐ–์—.

"์˜๋ฏธ ์  ๋ฒ„์ „ ๊ด€๋ฆฌ๋กœ ์ฐฉ๊ฐ ํ•  ์ˆ˜์—†๋Š” ๋ฆด๋ฆฌ์Šค ๋ ˆ์ด๋ธ” ์ง€์ • ์ฒด๊ณ„"๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”์˜ ์˜ˆ๋ฅผ ๋“ค์–ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ˆซ์ž ๋Œ€์‹  ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์‹ญ๋‹ˆ๊นŒ? ๋‚ ์งœ ๊ธฐ๋ฐ˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์ธ์šฉํ–ˆ์ง€๋งŒ ๋‚ด๊ฐ€ ๋ณธ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ฒด๊ณ„๋Š” ํ˜„์žฌ ๊ฐ๊ฐ 17.9.0 ๋ฐ 17.5.0 ์ธ Twisted ๋ฐ PyOpenSSL์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฒด๊ณ„์ž…๋‹ˆ๋‹ค. ์ €์—๊ฒŒ๋Š” ์™„์ „ํžˆ ๊ทธ๋Ÿด๋“ฏํ•œ semver ๋ฒ„์ „์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค ...

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ด๋–ค ํ˜œํƒ์„ ์ค„ ์ˆ˜ ์žˆ๋Š”์ง€ ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ด ๊ฐ€์ƒ์˜ ๋ฏธ๋ž˜์—์„œ ๋ชจ๋“  ๋ฆด๋ฆฌ์Šค์—๋Š” ์ง€๊ธˆ๊ณผ ๊ฐ™์ด ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž์™€ ๋ฌด๊ด€ ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๋‹ฌ์— ํ•œ ๋ฒˆ์”ฉ ์ฃผ์š” ๋ฒˆํ˜ธ๋ฅผ ์˜ฌ๋ฆผ์œผ๋กœ์จ ์–ด๋–ค ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? "์•„๋งˆ ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋ง๊ฐ€ ๋œจ๋ฆฌ์ง€ ๋งŒ ์•„๋งˆ ๋‹น์‹ ์„ ๋ง๊ฐ€ ๋œจ๋ฆฌ์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค."? ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๋ฒ„๊ทธ ์ˆ˜์ • ๋ฆด๋ฆฌ์Šค์—์„œ ์ฃผ์š” ๋ฒ„์ „์„ ๋ฒ”ํ”„ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ์‹ค์ œ๋กœ ํ˜ผ๋ž€ ์Šค๋Ÿฌ์› ๋˜ "์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž, ์†Œํ”„ํŠธ์›จ์–ด ์‚ฌ์šฉ์ž ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฐํฌ ๊ด€๋ฆฌ์ž"์˜ ์˜ˆ๋ฅผ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฉ”์ผ ๋ง๋ฆฌ์ŠคํŠธ๋Š”์ด ํ† ๋ก ์— ๋” ์ ํ•ฉํ•œ ์žฅ์†Œ์ด๋ฉฐ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ ์ „์— ํ† ๋ก ์„ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์—์žˆ๋Š” ์˜๊ฒฌ์€ ์›ํ•˜๋Š” ๋ฌธ์ œ์˜ ์ข…๋ฅ˜๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ํ† ๋ก ์—์„œ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@njsmith ์šฐ๋ฆฌ๊ฐ€ ๋™์˜ํ•˜์ง€ ์•Š๋Š” ์œ ์ผํ•œ ์‚ฌ์‹ค์€ ์‹œ๋งจํ‹ฑ ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ์˜ค๋Š˜๋‚  ๊ธฐ๋ณธ ๊ฐ€์ •์ธ์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋ณธ๊ฐ’ ์ธ (๋˜๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€) ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋Œ€ํ•œ๋ณด๋‹ค ๋ช…ํ™•ํ•œ ์ •์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์‹ ๊ฒฝ ์“ฐ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ด€๋ฆฌ ์ˆ˜์ค€์€ ๋ฐฐํฌ ๊ด€๋ฆฌ ๋ฐ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ๋กœ, ์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ์˜ ์ƒํ™ฉ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋ฒ„์ „์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.

์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ด๋ผ๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฐ ๋น„๊ณต์‹์  ์ธ ์งˆ๋ฌธ์€ ๊ณผํ•™ ์ปดํ“จํŒ… ์„ค์น˜ ๊ด€๋ฆฌ์ž์™€ ๋Œ€ํ™”ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ์ƒ์ƒํ–ˆ๋‹ค
์ข€ ๋” ๊ฒฝํ—˜์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹ (์ตœ๊ทผ ๋ฐ๋น„์•ˆ ์„ค์น˜์— ํŒจํ‚ค์ง€๋ฅผ ๋‚˜์—ดํ•˜๊ณ  ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐฉ์‹์„ ์กฐ์‚ฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์ž‘์œ„๋กœ ๋ช‡ ๊ฐœ๋ฅผ ์„ ํƒ ํ•จ)์ด ๋งค์šฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ์‹œ๋งจํ‹ฑ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ฑฐ์˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํ•œ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž์˜ ์˜๊ฒฌ์€ ํŠนํžˆ ๊ด€๋ จ์„ฑ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ์„ค์น˜ํ•  ๋ฒ„์ „์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ ์ด์™ธ์˜ ์–ด๋–ค ๊ทœ์น™๋„ ์“ธ๋ชจ๊ฐ€ ์—†๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๋Š” ๊ฐ ํŒจํ‚ค์ง€๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด ๋ณด๊ฑฐ๋‚˜ (์‹œ๊ฐ„๊ณผ ์—ญ๋Ÿ‰์ด ๋ถ€์กฑํ•จ) ๋ชจ๋“  ์‚ฌ์šฉ์ž (๋„ˆ๋ฌด ๋งŽ์€ ๊ฒฝ์šฐ)์™€์ƒ์˜ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ํ†ต์ผ ๋œ ์ •์ฑ…์„ ์ฑ„ํƒํ•ด์•ผํ•˜๋ฉฐ ์ด๊ฒƒ์€ ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ํ™”์˜ ๊ฐ€์ •์— ๊ธฐ๋ฐ˜ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ปดํ“จํŒ… ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ด€๋ฆฌ์ž๋Š” ๋ฉ”์ด์ € ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ๋ณ€๊ฒฝ๋œ ์—…๋ฐ์ดํŠธ๋ฅผ ์ ์šฉํ•˜๊ธฐ ์ „์— ๊ฐœ์ธ์ ์œผ๋กœ ์•Œ๊ณ ์žˆ๋Š” ๋ช‡ ๋ช…์˜ "๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž"๋ฅผ ํ™•์ธํ•œ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๊ณผํ•™์  Python ์‚ฌ์šฉ์ž์™€ ๊ด€๋ จํ•˜์—ฌ ์‹ค์ œ๋กœ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์˜ˆ๋กœ๋Š” ์ง์žฅ ๋™๋ฃŒ, ์ปจํผ๋Ÿฐ์Šค์—์„œ ๋งŒ๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค, ์ด๋ฉ”์ผ๋กœ ์กฐ์–ธ์„ ์š”์ฒญํ•˜๋Š” ์‚ฌ๋žŒ๋“ค, ์ˆ˜์—…์— ์ฐธ์—ฌํ•˜๋Š” ํ•™์ƒ๋“ค ๋“ฑ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ "๋‚˜๋Š” ๋‹น์‹ ์ด Python ์ „๋ฌธ๊ฐ€๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?"๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ํ•œ ์ปดํ“จํ„ฐ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋“ค ์ค‘ ๋Œ€๋ถ€๋ถ„์€ ์ข…์†์„ฑ ๋ฌธ์ œ๋ฅผ ์ „ํ˜€ ๊ณ ๋ คํ•˜์ง€ ์•Š์ง€๋งŒ, ์ผ๋ถ€๋Š” ์‹ค์ œ๋กœ ๋‘ ์„ค์น˜์˜ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ๋น„๊ตํ•˜์—ฌ "์ž‘์€ ์ฐจ์ด"๋งŒ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

@ eric-wieser์™€ @rgommers๊ฐ€ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋‚ด ์š”์ฒญ์€ ์ดˆ๊ธฐ "1"์„ ์š”์ฒญํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. NumPy ๋ฒ„์ „์—์„œ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, NumPy๋Š” ์‚ฌ์‹ค์ƒ ์ •์ฑ… ๊ฒฐ์ •์˜ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์—„๊ฒฉํ•˜๊ฒŒ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์•˜๋”๋ผ๋„ ์ด๋ฏธ ์‹œ๋งจํ‹ฑ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ NumPy๊ฐ€ ํ˜„์žฌ ๊ฐœ๋ฐœ ์›Œํฌ ํ”Œ๋กœ๋ฅผ ๊ฑฐ์˜ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์ฑ„ํƒ ํ•  ์ˆ˜ ์žˆ์Œ์„ ์‹œ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ํ•œ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž์˜ ์˜๊ฒฌ์€ ํŠนํžˆ ๊ด€๋ จ์„ฑ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ์„ค์น˜ํ•  ๋ฒ„์ „์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ ์ด์™ธ์˜ ์–ด๋–ค ๊ทœ์น™๋„ ์“ธ๋ชจ๊ฐ€ ์—†๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ๋„ ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. :-(. ๋‚˜๋Š” ๋จธ๋ฆฌ์นด๋ฝ์„ ์ชผ๊ฐœ๊ฑฐ๋‚˜ ๊ณผ์žฅํ•˜๋ ค๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ง„์งœ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ์™„์ „ํžˆ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ๊ฐ€ ์ง„์งœ๋ผ๊ณ ํ•ด์„œ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ทผ๋ณธ์ ์œผ๋กœ "์ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?"๋ผ๋Š” ์งˆ๋ฌธ์„ ๋‹จ์ˆœํ•œ ๊ธฐ๊ณ„ ๊ฒ€์‚ฌ๋กœ ์š”์•ฝ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ™˜์ƒ์ž…๋‹ˆ๋‹ค. semver๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์ฆ‰์‹œ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผํ•˜๋Š” ์ฃผ์š” ๋ฆด๋ฆฌ์Šค๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‚ฌ์†Œํ•œ ๋ณ€๊ฒฝ์„ ์ •๊ธฐ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค.

์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๋Š” ๊ฐ ํŒจํ‚ค์ง€๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด ๋ณด๊ฑฐ๋‚˜ (์‹œ๊ฐ„๊ณผ ์—ญ๋Ÿ‰์ด ๋ถ€์กฑํ•จ) ๋ชจ๋“  ์‚ฌ์šฉ์ž (๋„ˆ๋ฌด ๋งŽ์€ ๊ฒฝ์šฐ)์™€์ƒ์˜ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ํ†ต์ผ ๋œ ์ •์ฑ…์„ ์ฑ„ํƒํ•ด์•ผํ•˜๋ฉฐ ์ด๊ฒƒ์€ ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ํ™”์˜ ๊ฐ€์ •์— ๊ธฐ๋ฐ˜ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ปดํ“จํŒ… ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ด€๋ฆฌ์ž๋Š” ๋ฉ”์ด์ € ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ๋ณ€๊ฒฝ๋œ ์—…๋ฐ์ดํŠธ๋ฅผ ์ ์šฉํ•˜๊ธฐ ์ „์— ๊ฐœ์ธ์ ์œผ๋กœ ์•Œ๊ณ ์žˆ๋Š” ๋ช‡ ๋ช…์˜ "๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž"๋ฅผ ํ™•์ธํ•œ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š”์ด ๋ถ€๋ถ„์„ ์ข‹์•„ํ•œ๋‹ค :-). ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ semver์˜ ์ฒ ํ•™์— ๋Œ€ํ•ด ๋™์˜ ํ•  ๊ฒƒ ๊ฐ™์ง€๋Š” ์•Š์ง€๋งŒ, ๋‹ค๋ฅธ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ฒด๊ณ„์˜ ๊ตฌ์ฒด์ ์ธ ํšจ๊ณผ์™€ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๋ฐ”๋žŒ์งํ•œ ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด ํ† ๋ก ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค.

semver์˜ ๊ฐœ๋…์ด์ด ์ •์ฑ…๊ณผ ๋งŽ์€ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ ์‹ค์ œ๋กœ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๋ฅผ ํ™•์ธํ•˜์—ฌ semver๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๊นŒ? ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ๋Š” ๋‹น์‹ ์ด ๋งํ–ˆ๋“ฏ์ด ์–ด๋–ค ํ”„๋กœ์ ํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€์กฐ์ฐจ ๋งํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ •์ฑ…์€ semver๊ฐ€ ์กด์žฌํ•˜๊ธฐ ์˜ค๋ž˜ ์ „๋ถ€ํ„ฐ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ ์‚ฌ์šฉํ•ด์˜จ ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ด ์ •์ฑ…์˜ ๋” ๋‚˜์€ ํŠน์„ฑ์€ "์—…๊ทธ๋ ˆ์ด๋“œ์— ์–ผ๋งˆ๋‚˜์ฃผ์˜ํ•ด์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ํ”„๋กœ์ ํŠธ์˜ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค"์™€ ํ•จ๊ป˜ ์ฃผ์š” ๋ฆด๋ฆฌ์Šค๋Š” "ํฌ๊ณ "๋งˆ์ด๋„ˆ ๋ฆด๋ฆฌ์Šค๋Š” "์ž‘๊ฒŒ"๋ผ๋Š” ๊ณ ๋Œ€ ์ „ํ†ต์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

NumPy ํ”„๋กœ์ ํŠธ์˜ ๊ถŒ์žฅ ์‚ฌํ•ญ์€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๋ฆด๋ฆฌ์Šค๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ์ด ์ผํ™”์—์„œ ์ œ๊ฐ€ ์ทจํ•œ ๊ฒƒ์€ ํ˜„์žฌ ๋ฒˆํ˜ธ ์ง€์ • ์ฒด๊ณ„๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์„ ์ •ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๊ณ  ์žˆ๊ณ  semver๋กœ ์ „ํ™˜ํ•˜๋ฉด ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@njsmith ์ข‹์•„์š”, ์ฒ ํ•™๊ณผ ์‹ค์šฉ์„ฑ์—์„œ ๋ฒ—์–ด๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž, ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž, ์†Œํ”„ํŠธ์›จ์–ด ์‚ฌ์šฉ์ž ๊ฐ„์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์—์„œ ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๋ฒˆํ˜ธ์˜ ์—ญํ• ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹ค์‹œ ํ•œ ๋ฒˆ ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์— ํฐ ์˜๊ฒฌ ์ฐจ์ด๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์„ ์œ„ํ•ด ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž์™€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง€์นจ์„ ์ œ๊ณตํ•˜๊ณ  ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์นจ์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค. ์ €์—๊ฒŒ๋Š” ๋ชจ๋“  ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ž์‹ ์˜ ๊ธฐ์ค€์— ๋”ฐ๋ผ ๊ฒฐ์ •ํ•ด์•ผํ•˜๋ฉฐ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋Š” ๊ฐ€์žฅ ๊ฑฐ์นœ ์ˆ˜์ค€์—์„œ ์‚ฌ์‹ค์— ์ž…๊ฐ ํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ˆ˜๋‹จ์œผ๋กœ ์ž‘์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

NumPy๊ฐ€ ๋ณด์•ˆ์— ์˜ํ–ฅ์„์ฃผ์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ NumPy ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ณดํŽธ์  ์ธ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ์ œ๊ณตํ•ด์•ผํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๊ณผ ๊ธฐ๊ด€์€ ์„œ๋กœ ๋‹ค๋ฅธ ์š”๊ตฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๋งค์šฐ ๋‹ค๋ฅธ ์—…๋ฐ์ดํŠธ ์ •์ฑ…์„ ๊ฐ€์ง„ ArchLinux์™€ CentOS๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

@khinsen oldnumeric ํŒจํ‚ค์ง€๋Š” ์—ฌ์ „ํžˆ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

pip install oldnumeric

์•„๋งˆ๋„ ์ด๊ฒƒ์€ numpy์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ Python / Cython์œผ๋กœ ์ œํ•œ๋˜๊ณ  ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ์ œ์•ˆ ๋œ "์•ˆ์ •์ ์ธ numpy"์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  oldnumeric์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋‚œํ•ดํ•˜์ง€๋งŒ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ๊ฐ€์งˆ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

@xoviat ์‚ฌ์‹ค์ด์ง€๋งŒ ๊ทธ๊ฒƒ์€ ๋‹ค๋ฅธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‚ด ์š”์ ์€ ์†Œํ”„ํŠธ์›จ์–ด ๋ณด์กด์ด ์•„๋‹ˆ๋ผ ์†Œํ”„ํŠธ์›จ์–ด ๊ด€๋ฆฌ ๋ถ„์•ผ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ํ”Œ๋ ˆ์ด์–ด ๊ฐ„์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.

์งˆ๋ฌธ : ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๋กœ์„œ (๊ฐœ์ธ์šฉ ์ปดํ“จํ„ฐ์—์„œ๋„) ํŒจํ‚ค์ง€๊ฐ€ ๋ฒ„์ „ 1.8์—์„œ ๋ฒ„์ „ 1.9๋กœ ์™„์ „ํ•œ API ๊ณ„์ธต์„ ์‚ญ์ œํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๊นŒ?

"์˜ˆ"๋ผ๊ณ  ๋‹ตํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•œ ์ ์ด์žˆ๋Š” numpy ์ด์™ธ์˜ ์†Œํ”„ํŠธ์›จ์–ด ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

BTW, ๋‚˜๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด๊ฒƒ์— ๋ฌผ๋ ธ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์‹  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ MMTK๊ฐ€ ํ•˜๋ฃจ์—์„œ ๋‹ค์Œ ๋‚ ๋กœ ์ž‘๋™์„ ์ค‘๋‹จํ–ˆ๋Š”์ง€ ๋ฌป๋Š” ๋งŽ์€ ๋ฉ”์ผ์„ ๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€ ์‹ฌ๊ฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š๊ณ  ์†Œํ”„ํŠธ์›จ์–ด ์„ค์น˜๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ oldnumeric ๋–จ์–ด ๋œจ๋ฆฌ๋Š” ๊ฒƒ์€ ์ตœ๊ทผ NumPy ์—ญ์‚ฌ์ƒ ์ตœ์•…์˜ ์‚ฌ๊ฑด์€ ์•„๋‹ˆ ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์˜๊ด‘์€ diagonal ์™€ ๊ฐ™์€ ์ผ๋ถ€ ์ž‘์—…์˜ ๋ณต์‚ฌ /๋ณด๊ธฐ ์˜๋ฏธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. NumPy ๋ฒ„์ „ (๋ถ€ ๋ฒ„์ „ ๋ฒˆํ˜ธ ๋ณ€๊ฒฝ!)์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฝ”๋“œ๋Š” ์ •๋ง ์•…๋ชฝ์ž…๋‹ˆ๋‹ค.

: BTW, ์ดํ›„ ๊ฑฐ์˜ ์‚ฌ๋žŒ์ด ์ด์•ผ๊ธฐ๋ฅผ ์•Œ๊ณ  pip install oldnumeric @xoviat์ด ์ถ”๊ฐ€ ํŒจํ‚ค์ง€๋ฅผ ์ค€๋น„ํ•˜๊ณ  PyPI์— ๋„ฃ์–ด ๋•Œ๋ฌธ์— ์ดํ‹€ ์ „๋ถ€ํ„ฐ ์ž‘ํ’ˆ. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

ํŒจํ‚ค์ง€๊ฐ€ ๋ฒ„์ „ 1.8์—์„œ ๋ฒ„์ „ 1.9๋กœ ์™„์ „ํ•œ API ๊ณ„์ธต์„ ์‚ญ์ œํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๊นŒ?

์–ด๋–ค ๋ ˆ์ด์–ด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•œ numpy ์ด์™ธ์˜ ์†Œํ”„ํŠธ์›จ์–ด ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

SciPy๋Š” weave ๋ฐ maxentropy ํŒจํ‚ค์ง€๋ฅผ ์‚ญ์ œํ–ˆ์œผ๋ฉฐ pandas ๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ์„ ์ •๊ธฐ์ ์œผ๋กœ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์ €๋ช…ํ•œ ์˜ˆ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ํŽธ์ง‘ : ์˜ˆ๋ฅผ ๋“ค์–ด Python ์ž์ฒด, https://docs.python.org/3/whatsnew/3.6.html#removed ์ฐธ์กฐ

BTW, ๋‚˜๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด๊ฒƒ์— ๋ฌผ๋ ธ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์‹  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ MMTK๊ฐ€ ํ•˜๋ฃจ์—์„œ ๋‹ค์Œ ๋‚ ๋กœ ์ž‘๋™์„ ์ค‘๋‹จํ–ˆ๋Š”์ง€ ๋ฌป๋Š” ๋งŽ์€ ๋ฉ”์ผ์„ ๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€ ์‹ฌ๊ฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š๊ณ  ์†Œํ”„ํŠธ์›จ์–ด ์„ค์น˜๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ๋ณ€ํ™”๋Š” ์•ฝ 10 ๋…„ ๋™์•ˆ ์ด๋ฃจ์–ด์กŒ๊ณ , ๋‹ค๋ฅธ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ฒด๊ณ„๊ฐ€ ์—ฌ๊ธฐ์—์„œ ์ฐจ์ด๋ฅผ ๋งŒ๋“ค ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค.

๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์€ (์˜ค๋ž˜๋œ) ์ฝ”๋“œ์˜ ์ผ๋ถ€๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ๊ณผ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์‰ฝ๊ฒŒ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ ์‚ฌ์ด์˜ ๊ท ํ˜•์ž…๋‹ˆ๋‹ค. ์ „๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์ž˜๋ชปํ–ˆ๋‹ค๋ฉด ๋ณด์ˆ˜์  ์ธ ์ธก๋ฉด์—์„œ ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. numpy๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ˆ˜๋…„ ์ „์˜ ๋Œ€๊ธฐ์—… ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ค„์•ผํ–ˆ๋˜ ์‚ฌ๋žŒ์œผ๋กœ์„œ ์ €๋Š” ๊ณ ํ†ต์„ ๋Š๋ผ์ง€๋งŒ ์ ˆ๋Œ€ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹Œ ๊ฒƒ์„ ์ฃผ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (์ผ๋ฐ˜์ ์œผ๋กœ ์™„์ „ํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ ๊ณ ์ • ๋ฐ ์ง€์› ์ค‘๋‹จ ๊ฒฝ๊ณ  ํ™•์ธ๊ณผ ๊ฐ™์€ ์ž‘์—…์ด ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ๋ ˆ์ด์–ด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ๊ฐ€์ •ํ•˜๋Š” ์ˆซ์ž / numarray ์ง€์›

@rgommers ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. "SciPy ์ƒํƒœ๊ณ„ ์™ธ๋ถ€ ์˜ ๋˜ ๋‹ค๋ฅธ ์˜ˆ"๋ผ๊ณ  ๋ง ํ–ˆ์–ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ oldnumeric ๋Œ€ํ•œ ์ง€์› ์ค‘๋‹จ์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฃผ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ด๋ ‡๊ฒŒํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ์–ด๋–ค ์ฐจ์ด๋ฅผ ๋งŒ๋“ค์—ˆ ์„๊นŒ์š”? ์‚ฌ๋žŒ๋“ค์ด ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ๋ฅผ ์ฝ์ง€ ์•Š๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์„ ์ฃผ์ €ํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” (๊ฐœ๋ฐœํ•˜์ง€ ์•Š๋Š”) ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€ ์ด๊ฒƒ์„ ์กฐ์‹ฌํ•ด์•ผ ํ•  ์‹ ํ˜ธ๋กœ ๋ฐ›์•„ ๋“ค์˜€์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

SciPy ์ƒํƒœ๊ณ„์—๋Š” ๊ฐœ๋ฐœ์„ ์ ๊ทน์ ์œผ๋กœ ๋”ฐ๋ฅด์ง€ ์•Š๋Š” ์ˆ˜๋งŽ์€ ๋กœ์šฐ ํ”„๋กœํ•„ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. Python ๋ฐ NumPy๋Š” ls ๋ฐ gcc ์™€ ๋™์ผํ•œ ํŠน์„ฑ์˜ ์ธํ”„๋ผ ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ข…์ข… ๊ทธ๋ณด๋‹ค ์ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ Python์œผ๋กœ ์ž‘์„ฑ๋˜๊ณ  NumPy์— ์˜์กดํ•˜๋Š” ์ผ๋ถ€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ์ค‘๋‹จ๋˜๋ฉด ์™„์ „ํžˆ ์†์‹ค๋ฉ๋‹ˆ๋‹ค.

@rgommers ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. "SciPy ์ƒํƒœ๊ณ„ ์™ธ๋ถ€์˜ ๋˜ ๋‹ค๋ฅธ ์˜ˆ"๋ผ๊ณ  ๋ง ํ–ˆ์–ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ SciPy ์ƒํƒœ๊ณ„ ์™ธ๋ถ€์—์žˆ๋Š” Python ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ์— ๋Œ€ํ•œ ๋งํฌ๋กœ ๋‚ด ๋‹ต์žฅ์„ ํŽธ์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ์–ด๋–ค ์ฐจ์ด๋ฅผ ๋งŒ๋“ค์—ˆ ์„๊นŒ์š”? ์‚ฌ๋žŒ๋“ค์ด ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ๋ฅผ ์ฝ์ง€ ์•Š๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์„ ์ฃผ์ €ํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” (๊ฐœ๋ฐœํ•˜์ง€ ์•Š๋Š”) ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€ ์ด๊ฒƒ์„ ์กฐ์‹ฌํ•ด์•ผ ํ•  ์‹ ํ˜ธ๋กœ ๋ฐ›์•„ ๋“ค์˜€์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค. 1.12, 1.13, 1.14 ๋“ฑ์ด ์•„๋‹Œ 12.0, 13.0, 14.0์ด ์žˆ๋‹ค๋ฉด ์‚ฌ์šฉ์ž๋Š” ๊ทธ๊ฒƒ์— ์ต์ˆ™ํ•ด์ง€๊ณ  ์ด์ „๊ณผ ๋™์ผํ•œ ์—…๊ทธ๋ ˆ์ด๋“œ ์ „๋žต์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€๋‹ค์ˆ˜๊ฐ€ ๊ฐ‘์ž๊ธฐ ํ›จ์”ฌ ๋” ๋ณด์ˆ˜์ ์ด๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

SciPy ์ƒํƒœ๊ณ„์—๋Š” ๊ฐœ๋ฐœ์„ ์ ๊ทน์ ์œผ๋กœ ๋”ฐ๋ฅด์ง€ ์•Š๋Š” ์ˆ˜๋งŽ์€ ๋กœ์šฐ ํ”„๋กœํ•„ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. Python ๋ฐ NumPy๋Š” ls ๋ฐ gcc์™€ ๋™์ผํ•œ ํŠน์„ฑ์˜ ์ธํ”„๋ผ ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ข…์ข… ๊ทธ๋ณด๋‹ค ์ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ Python์œผ๋กœ ์ž‘์„ฑ๋˜๊ณ  NumPy์— ์˜์กดํ•˜๋Š” ์ผ๋ถ€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ์ค‘๋‹จ๋˜๋ฉด ์™„์ „ํžˆ ์†์‹ค๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋‘ ์‚ฌ์‹ค์ด๋ฉฐ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋กœ ๋งˆ์ˆ ์ฒ˜๋Ÿผ ๊ณ ์น  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. pip install --upgrade numpy ๋ฅผ ์‹คํ–‰ํ–ˆ๋‹ค๋ฉด, ๋ฌด์—‡์„ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„์•ผํ•ฉ๋‹ˆ๋‹ค (์ด๋Š” ๋ฒ„์ „ ๋ฒˆํ˜ธ๋„ ํ‘œ์‹œ๋˜์ง€ ์•Š์Œ). ํŒจํ‚ค์ง• ์‹œ์Šคํ…œ์ด๋ผ๋ฉด ๊ดœ์ฐฎ์€ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๊ฐ€ ์—†๊ฑฐ๋‚˜ ์‹คํ–‰๋˜์ง€ ์•Š์€ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ฌธ์ œ๋ฅผ๋ณด๊ณ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ฒด๊ณ„ ๋ณ€๊ฒฝ์˜ ๋‹ค๋ฅธ ๋‹จ์  :

  • ์œ ์ง€ ๊ด€๋ฆฌ ์ •์ฑ…์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋„์›€์ด๋˜๊ธฐ๋ณด๋‹ค๋Š” ํ˜ผ๋ž€ ์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ์ด์ œ ๊ธฐ๋ณธ์ ์œผ๋กœ Python์˜ ๋ฆฌ๋“œ๋ฅผ ๋”ฐ๋ฅด๊ณ  ์ „์ฒด ์ƒํƒœ๊ณ„์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„๊ณผ ๋™์ผํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ข‹์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค
  • ์•„๋งˆ๋„ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์šฐ๋ฆฌ๋Š” ์‹ค์ œ๋กœ ์ค‘์š”ํ•œ ๋ณ€ํ™”๋ฅผ ์•Œ๋ฆฌ๋Š” ๋Šฅ๋ ฅ์„ ์žƒ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ABI๋ฅผ ๊นฐ ์ˆ˜์žˆ๋Š” ๋ฆด๋ฆฌ์Šค์ฒ˜๋Ÿผ 2.x๋กœ ๊ฐˆ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค.

๋‚ด ๊ธฐ์ค€ ์ฐธ์กฐ๋Š” Python์ด ์•„๋‹ˆ๋ผ ์ผ๋ฐ˜์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ์„ค์น˜์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ๋งŽ์€ (์•„๋งˆ๋„ ๋Œ€๋ถ€๋ถ„์˜) ์‚ฌ์šฉ์ž์—๊ฒŒ NumPy๋Š” gnu-coreutils ๋˜๋Š” gcc์™€ ๊ฐ™์€ ์ธํ”„๋ผ์ž…๋‹ˆ๋‹ค. SciPy ์ƒํƒœ๊ณ„์˜ ๋งฅ๋ฝ์—์„œ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ํ•ด์„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•ฝ 300 ๊ฐœ์˜ ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋œ ๋ฐ๋น„์•ˆ 9 ์‹œ์Šคํ…œ์„ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค ์ค‘ 85 %๋Š” ์ •์ˆ˜๋กœ ์‹œ์ž‘ํ•˜์—ฌ ์ ์ด ์˜ค๋Š” ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ •์ˆ˜ ์ ‘๋‘์‚ฌ๋Š” 1 (30 %), 2 (26 %), 0 (14 %) ๋ฐ 3 (13 %)์ž…๋‹ˆ๋‹ค. NumPy๊ฐ€ ์ผ๋ฐ˜์ ์ธ ๊ธฐ๋Œ€์— ๋ถ€ํ•ฉํ•˜๋Š” ๋ฒ„์ „ ๋ฒˆํ˜ธ ์ง€์ • ์ฒด๊ณ„ (์ฆ‰, ์˜๋ฏธ ์  ๋ฒ„์ „ ์ง€์ • ๋˜๋Š” ๊ทผ์‚ฌ์น˜)๋ฅผ ์ฑ„ํƒํ•˜๋ฉด ํ™•์‹คํžˆ ๋ˆˆ์— ๋„๊ณ ์ฃผ์˜ํ•ด์„œ ์ทจ๊ธ‰๋ฉ๋‹ˆ๋‹ค.

๋ฐ๋น„์•ˆ์ด ์„ค์น˜ ํ•œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์œ ์ผํ•œ ์—…๋ฐ์ดํŠธ๋Š” ์ง‘์—์„œ ๋งŒ๋“  ์กฐ์ง ๋ชจ๋“œ ํ™•์žฅ์„ ๊นจ๋œจ๋ฆฐ ์กฐ์ง ๋ชจ๋“œ๋ฅผ ๋ณ€๊ฒฝ ํ•œ Emacs ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” SciPy ์ƒํƒœ๊ณ„์—์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ „์ฒด์ ์œผ๋กœ ๋‚ฎ์€ ๋ฒ„์ „ ๋ฒˆํ˜ธ ์ ‘๋‘์‚ฌ๋Š” ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ NumPy ๋ฐ ์นœ๊ตฌ๋“ค๋ณด๋‹ค ํ›จ์”ฌ ๋” ์•ˆ์ •์ ์ด๋ผ๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

SciPy ์ƒํƒœ๊ณ„ ์ „๋ฐ˜์— ๊ฑธ์นœ ํ†ต์ผ์„ฑ์€ ์‹ค์ œ๋กœ ์ค‘์š”ํ•˜์ง€๋งŒ ์ „์ฒด ์ƒํƒœ๊ณ„๊ฐ€ ์™ธ๋ถ€ ์„ธ๊ณ„์˜ ๊ธฐ๋Œ€์— ๋ถ€ํ•ฉํ•˜๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ์ฒด๊ณ„๋ฅผ ์ฑ„ํƒํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” NumPy๋ฅผ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ถ€๋ถ„์œผ๋กœ๋ณด๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ง€ NumPy๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฌด์—‡๋ณด๋‹ค ๋” ๋งŽ์€ ์ธํ”„๋ผ์ž…๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ํ•จ์ˆ˜ ์˜๋ฏธ์˜ ๋ณ€๊ฒฝ์€ ABI์˜ ๋ณ€๊ฒฝ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ „์ž๋Š” ์ˆ˜๋ฐฑ ๋ช…์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋””๋ฒ„๊น… ์•…๋ชฝ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜๋…„ ๋™์•ˆ ๊ฐ์ง€๋˜์ง€ ์•Š์€ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ›„์ž๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•จ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ‘œ์ค€์— ๋”ฐ๋ฅด๋ฉด NumPy๋Š” Python์˜ ์„ ๋‘๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด Python ์–ธ์–ด์—์„œ ๋‚ด๊ฐ€ ์•Œ๊ณ ์žˆ๋Š” ์˜๋ฏธ ์ฒด๊ณ„์˜ ์œ ์ผํ•œ ๋ณ€๊ฒฝ์€ 2์—์„œ 3์œผ๋กœ ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ํ•จ์ˆ˜ ์˜๋ฏธ์˜ ๋ณ€๊ฒฝ์€ ABI์˜ ๋ณ€๊ฒฝ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ „์ž๋Š” ์ˆ˜๋ฐฑ ๋ช…์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋””๋ฒ„๊น… ์•…๋ชฝ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜๋…„ ๋™์•ˆ ๊ฐ์ง€๋˜์ง€ ์•Š์€ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ›„์ž๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•จ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์ •๋ง ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ์ œ๊ฑฐ ๋  ๋•Œ ๋ช…ํ™•ํ•œ ํŒŒ์†์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ˆ˜์น˜ ๊ฒฐ๊ณผ๋ฅผ ์กฐ์šฉํžˆ ๋ณ€๊ฒฝํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋Œ€๊ฐ์„  ๋ทฐ ๋ณ€๊ฒฝ์—์„œ ๋ฐฐ์šด ๊ฒƒ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

ํ™•์‹คํžˆ ๋ˆˆ์— ๋„๊ณ  ์กฐ์‹ฌ์Šค๋Ÿฝ๊ฒŒ ๋‹ค๋ฃจ์–ด ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ๋™์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ฐ๋น„์•ˆ์—์„œ๋„ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜์˜ "์ผ๋ฐ˜์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ์„ค์น˜"๋Š” ์•„๋‹™๋‹ˆ๋‹ค (Windows์˜ Anaconda์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค). ๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ๋ณผ ์ˆ˜ ์—†๋‹ค๋Š” ์œ„์˜ ์ฃผ์žฅ์„ ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ( pip install --upgrade ๋˜๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ).

๋˜ํ•œ ๋‹ค๋ฅธ ํฐ ์ข…์†์„ฑ ์ฒด์ธ์ด ์•„๋‹Œ OS ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฐ GUI ํ”„๋กœ๊ทธ๋žจ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์ด ๊ฒฐ์ฝ” ๊นจ์ง€์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒฝํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ „์ฒด JavaScript / NodeJS ์ƒํƒœ๊ณ„๋Š” ์•„๋งˆ๋„ Python๋ณด๋‹ค ๋” ์ทจ์•ฝ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

BTW, ๋‚˜๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด๊ฒƒ์— ๋ฌผ๋ ธ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์‹  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ MMTK๊ฐ€ ํ•˜๋ฃจ์—์„œ ๋‹ค์Œ์œผ๋กœ ์ž‘๋™์„ ๋ฉˆ์ท„๋Š”์ง€ ๋ฌป๋Š” ๋งŽ์€ ๋ฉ”์ผ์„ ๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์—

์ด๊ฒƒ์€ ์—ฌ๊ธฐ์—์„œ ๋ฏธ๋ฌ˜ํ•จ์˜ ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ, MMTK์™€ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋Š” ์ˆซ์ž / numarray ํ˜ธํ™˜์„ฑ ์ฝ”๋“œ ์ œ๊ฑฐ๋กœ ์ธํ•ด ์˜ํ–ฅ์„๋ฐ›์€ ์œ ์ผํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์‹ญ๋‹ˆ๊นŒ? 100? 1000? NumPy๋Š” ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์‚ฌ์šฉ์ž์˜ 0.1 %๊ฐ€ ์ด๋ฒˆ ์ œ๊ฑฐ๋กœ ์ธํ•ด ์˜ํ–ฅ์„ ๋ฐ›์•˜์„๊นŒ์š”? ์ด๊ฒƒ์€ ํ™•์‹คํžˆ 0์ด ์•„๋‹ˆ๋ฉฐ, ๊ทธ๊ฒƒ์ด ์ž‘๋‹ค๋Š” ์‚ฌ์‹ค์ด ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐฉ๋ฒ•์œผ๋กœ 100 % ์‚ฌ์šฉ์ž๋ฅผ ์˜์›ํžˆ ์ง€์›ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ 100 % ๋ถˆ๋งŒ์„๋ฐ›๋Š” ๊ฒƒ์ด ํŠนํžˆ ๊ณ ํ†ต ์Šค๋Ÿฝ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ์ด๋ฅผ ์œ„ํ•ด ์ฃผ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ์˜ฌ๋ฆฌ๋ฉด ์‚ฌ์šฉ์ž์˜ 99.9 %๊ฐ€ ์šธํ”„๋ฅผ ์šธ๋ ธ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์˜คํƒ์ž…๋‹ˆ๋‹ค. 0.1 %์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” OTOH๊ฐ€ ์ •๋ง ์ค‘์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ตœ์„ ์˜ ๋…ธ๋ ฅ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋งˆ์ดํฌ๋กœ ๋ฆด๋ฆฌ์Šค์—์„œ ์‚ฌ์šฉ์ž์˜ 0.1 % ์ด์ƒ์„ ๊นจ๋œจ๋ฆฌ๋Š” ๊ฒƒ์€ ๋“œ๋ฌธ ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋ฌด์—‡์„ํ•ฉ๋‹ˆ๊นŒ?

๋ฒ„์ „ ๋ฒˆํ˜ธ์˜ ๋ฌด๋”˜ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๋‰˜์•™์Šค๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋‚˜ ์—…๊ทธ๋ ˆ์ด๋“œ๋กœ ์ธํ•ด ์ฝ”๋“œ๊ฐ€ ์†์ƒ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์•Œ ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์›ํ•ฉ๋‹ˆ๋‹ค . Semver๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์„ ์•ฝ์†ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ํ–‰ํ•˜๋Š” ๋‹ค์ด์–ดํŠธ๊ฐ€ ์•”์„ ์น˜๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์ธ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” semver๋„ ์•ฝ์†๋Œ€๋กœ ์‚ด๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ข‹์€ ์—”์ง€๋‹ˆ์–ด๊ฐ€๋˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ทธ ํ˜„์‹ค์˜ ๋ณต์žก์„ฑ์„ ๋‹ค๋ค„์•ผํ•ฉ๋‹ˆ๋‹ค.

NumPy ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ณดํŽธ์  ์ธ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ์ œ๊ณตํ•ด์•ผํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๊ณผ ๊ธฐ๊ด€์€ ์„œ๋กœ ๋‹ค๋ฅธ ์š”๊ตฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ํ•˜๋‚˜๋ฟ์ด๋ฏ€๋กœ ๋ณดํŽธ์  ์ธ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์ •์˜์— ๋”ฐ๋ผ ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์€ ๋ณดํŽธ์  ์ธ ๊ถŒ์žฅ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ํ†ต์ œ ํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ ์˜๊ด‘์€ diagonal ์™€ ๊ฐ™์€ ์ผ๋ถ€ ์ž‘์—…์˜ ๋ณต์‚ฌ /๋ณด๊ธฐ ์˜๋ฏธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

IIRC ์šฐ๋ฆฌ๋Š” ๋ˆ„๊ตฐ๊ฐ€์˜ ์ฝ”๋“œ๋ฅผ ์œ„๋ฐ˜ํ–ˆ๋‹ค๊ณ  ๋งํ•˜๋Š” ๋ˆ„๊ตฐ๊ฐ€๋กœ๋ถ€ํ„ฐ ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋ง ๊ทธ๋Œ€๋กœ ๋‹จ์ผ ๋ถˆ๋งŒ์„๋ฐ›์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. (์–ด์ฉŒ๋ฉด ํ•œ ์‚ฌ๋žŒ์ผ๊นŒ์š”?) ์•„๋ฌด๋„ ์˜ํ–ฅ์„๋ฐ›์ง€ ์•Š์•˜๋‹ค๋Š” ๋œป์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ๋ณ€ํ™”์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์˜ํ–ฅ์„๋ฐ›๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๊ทนํžˆ ์ผ๋ถ€์— ๋ถˆ๊ณผํ•˜์ง€๋งŒ ๋ถˆ๋งŒ์„ ์‹ค์ œ ๋Œ€๋ฆฌ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์„ธ๊ณ„์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์€ ์ด๊ฒƒ์ด ์ƒ์œ„ 50 ์œ„๋ฅผ ์ฐจ์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  BTW ๋‚˜๋Š” ๋‹น์‹ ์ด ๊นŠ์€ ์—ญ์‚ฌ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๊ทธ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์‹ฌ๊ฐํ•œ ๋ณ€ํ™”๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค :-).

๋ฐ๋น„์•ˆ์ด ์„ค์น˜ ํ•œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์œ ์ผํ•œ ์—…๋ฐ์ดํŠธ๋Š” ์ง‘์—์„œ ๋งŒ๋“  ์กฐ์ง ๋ชจ๋“œ ํ™•์žฅ์„ ๊นจ๋œจ๋ฆฐ ์กฐ์ง ๋ชจ๋“œ๋ฅผ ๋ณ€๊ฒฝ ํ•œ Emacs ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” SciPy ์ƒํƒœ๊ณ„์—์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ •์ค‘ํ•˜๊ฒŒ๋„ ์ด๊ฒƒ์€ NumPy ๋Œ€ Debian๋ณด๋‹ค NumPy ๋Œ€ Debian์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋” ๋งŽ์ด ๋งํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฐ๋น„์•ˆ์„ ์‚ฌ๋ž‘ํ•˜๊ณ , ๊ฑฐ์˜ 20 ๋…„ ๋™์•ˆ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•ด ์™”๊ณ , ๊ทธ๊ฒƒ์ด ๋ช‡ ๋ฒˆ์ด๋‚˜ ๊ณ ์žฅ ๋‚ฌ๋Š”์ง€ ์…€ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ์ฃผ์— ์ƒˆ๋กœ์šด ๊ทธ๋†ˆ์˜ ๊ธฐ๊ดดํ•œ ๋ฌธ์ œ๋กœ ์ธํ•ด ๋กœ๊ทธ์ธ ์Šคํฌ๋ฆฝํŠธ ๊ฐ€ ๊นจ์กŒ๊ณ  ๋‹ค๋ฅธ ์—…๊ทธ๋ ˆ์ด๋“œ๋กœ ์ธํ•ด -Werror ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ผ์„ํ•˜๊ณ  ๊ฒฝ๊ณ  ๋™์ž‘์„ ์•ฝ๊ฐ„ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋•Œ๋ฌธ์— (๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ์˜์กด ํ•  ์ˆ˜์žˆ๋Š”) gcc ๋ฆด๋ฆฌ์Šค์™€ ๊ฐ™์€ ๊ฒƒ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ตœ์ ํ™” ๊ณผ์ • ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ ๋“ฑ)์€ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ „์ฒด์ ์œผ๋กœ ๋‚ฎ์€ ๋ฒ„์ „ ๋ฒˆํ˜ธ ์ ‘๋‘์‚ฌ๋Š” ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ NumPy ๋ฐ ์นœ๊ตฌ๋“ค๋ณด๋‹ค ํ›จ์”ฌ ๋” ์•ˆ์ •์ ์ด๋ผ๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ „์ฒด์ ์œผ๋กœ ๋‚ฎ์€ ๋ฒ„์ „ ๋ฒˆํ˜ธ ์ ‘๋‘์‚ฌ๋Š” ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ semver๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ํ•จ์ˆ˜ ์˜๋ฏธ์˜ ๋ณ€๊ฒฝ์€ ABI์˜ ๋ณ€๊ฒฝ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ „์ž๋Š” ์ˆ˜๋ฐฑ ๋ช…์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋””๋ฒ„๊น… ์•…๋ชฝ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜๋…„ ๋™์•ˆ ๊ฐ์ง€๋˜์ง€ ์•Š์€ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ›„์ž๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•จ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ๊ทธ๋Ÿฌํ•œ ๋ณ€ํ™”๋ฅผ ๊ทน๋„๋กœ ๊ฒฝ๊ณ„ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” ๊ด€์ ์—์„œ ์•ฝ๊ฐ„์˜ ๋‹จ์ ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์šฐ๋ฆฌ๊ฐ€ ํ•ญ์ƒ ์ผ์„ ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ๋ฐ”๊พผ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ ๊ฐ™๊ณ , ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๊ทธ๊ฒƒ์„ ์กด์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์˜ ๊ฒฝํ—˜์„ ๋ฐ˜์˜ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ์˜ ๊ฒฝํ—˜์€ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋Ÿฌํ•œ ๋ณ€ํ™”์— ๊ทน๋„์˜์ฃผ์˜๋ฅผ ๊ธฐ์šธ ์˜€๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ œ๊ฐ€ ์‚ฌ์šฉ์ž๋“ค๊ณผ ์ด์•ผ๊ธฐ ํ•  ๋•Œ, ๋‹น์‹ ์˜ ๊ด€์ ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์€ ~ 5 %์ด๊ณ , numpy๊ฐ€ ์•ˆ์ •์„ฑ์—์„œ ์ข‹์€ ์ผ์„ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋Š๋ผ๋Š” ์‚ฌ๋žŒ์€ ~ 95 %์ž…๋‹ˆ๋‹ค. ๋˜๋Š” ๋„ˆ๋ฌด ์ข‹์€ ์ผ์„ํ•˜๊ณ  ์žˆ๊ณ  ๋” ๊ธฐ๊บผ์ด ์ผ์„ ๊นฐ ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์šฐ๋ฆฌ๊ฐ€ ๋‹น์‹ ์„ ์‹ค๋ง์‹œํ‚จ๋‹คํ•ด๋„ ์šฐ๋ฆฌ๋Š” ๋งˆ์ง€๋ง‰ ๊ทธ๋ฃน์„ ์‹ค๋ง ์‹œํ‚จ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ์œ„๋กœ๋ฅผ๋ฐ›์„ ์ˆ˜์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค :-).

Emacs ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š”

๊ธ€์Ž„, ์ฃผ์ œ๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฒƒ์€ ์•ˆ์ •์„ฑ์˜ ๋‹ค๋ฅธ ์ธก๋ฉด์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. Emacs๋Š” Stallman์˜ ๋ณ€ํ™”์— โ€‹โ€‹๋Œ€ํ•œ ์ €ํ•ญ์œผ๋กœ ์ธํ•ด ์ˆ˜๋…„๊ฐ„ ์ •์ ์ด์—ˆ์œผ๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ xEmacs ํฌํฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ž์‹ ์˜ ๊ธธ์€ Emacs-> xEmacs๋กœ ๊ฐ”๋‹ค.-> Vim;) ์กฐ๊ธฐ ํ™”์„ํ™”๋Š” ๋‚ด๊ฐ€ ์˜ˆ์ „์— ๋ฐ๋น„์•ˆ ์‚ฌ์šฉ์„ ์ค‘๋‹จ ํ•œ ์ด์œ ์ด๊ธฐ๋„ํ•˜๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ๋‹จ์ˆœํžˆ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์˜ท์žฅ์— ์ˆจ๊ฒจ์ ธ์žˆ๋Š” ์˜ค๋ž˜๋œ ํ•˜๋“œ์›จ์–ด์—์„œ ๊ณ ๋Œ€ ๋ฒ„์ „์˜ BSD๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋Ÿฐ ๊ณณ์ด ๋งŽ์„ ๊ฑฐ๋ผ๊ณ ๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ์ฒด๊ณ„์˜ ๋ณ€๊ฒฝ์ด ์‹ค์ œ๋กœ ์–ด๋–ค ์ฐจ์ด๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ์ƒ์‚ฐ์ ์ธ ๊ฒฝ๋กœ๋Š” ํ˜„๋Œ€ํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. @khinsen ์ฃผ์š” ํ”„๋กœ์ ํŠธ์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜๋ฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๋‹น์‹ ์„ ๋„์šธ ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.
https://github.com/ScientificPython. Python ์ฝ”๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
์ด์ „ C API๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ  ์ด์ „์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Py_PROTO์™€ ๊ฐ™์€ ์ผ๋ถ€ ๊ธฐ๋Šฅ์€
2000 ๋…„๋ถ€ํ„ฐ). ๋ฌผ๋ก  PR๋„ ํ™˜์˜ํ•˜์ง€๋งŒ
์‹œ๊ฐ„์„ ๋ณด๋‚ด๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฐ€ ์ œ๊ธฐ ํ•œ ๋” ํฐ ๋ฌธ์ œ๋Š”
ํ”„๋กœ์ ํŠธ "(๋ชจ๋“  ํ”„๋กœ์ ํŠธ๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋””์— ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ Python 3) ์ง€์›์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์–ด๋•Œ?
NumPy ๊ฐœ๋ฐœ์ž ์‹œ๊ฐ„์ด ํ• ๋‹น ๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฒฐ์ • ํ–ˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š”
๊ทธ์˜ ํ•ต์‹ฌ ์ฃผ์žฅ์ด ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. SciPy๋Š”
์ด์ „ ํฌํŠธ๋ž€ ํ”„๋กœ์ ํŠธ (์˜ˆ :
fftpack) ์ˆ˜์ •์ด ๊ฑฐ์˜ ๋˜๋Š” ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์ด ๋ง๋กœ ์“ฐ์—ฌ์กŒ๋‹ค๋ฉด
"fortran 2"์™€ ์ƒˆ๋กœ์šด ์ปดํŒŒ์ผ๋Ÿฌ๋Š” "fortan 3"๋งŒ ์ปดํŒŒ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.
์ค‘์š”ํ•œ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” ์‹ค์ œ๋กœ NumPy์˜ ์ž˜๋ชป์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๊ฐ€ ๊ฐ€์ง„ ๊ฒƒ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ 
NumPy 1.13์ด ์„ค์น˜๋œ ์ƒํƒœ์—์„œ oldnumeric์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค.
NumPy๊ฐ€ ์—ฌ๊ธฐ์„œ ๋ฒ”์ธ์ด ์•„๋‹˜์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. oldnumeric API๋Š”
๋ง ๊ทธ๋Œ€๋กœ 10 ๋…„์ด ๋„˜์—ˆ์Šต๋‹ˆ๋‹ค (์•„๋งˆ 20 ๋…„์ด ๋‹ค๊ฐ€์˜ด!).
์ตœ์‹  NumPy์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. NumPy API๋Š” ์•„๋งˆ๋„ ์•ˆ์ •์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ถฉ๋ถ„ํžˆ.

@charris ์ €๋Š” "์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค"๋Š” ๊ฒƒ์ด ์ปดํ“จํŒ…์—์„œ ์ƒ์‚ฐ์ ์ธ ํƒœ๋„๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๋ฐ ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์š”์ ์€ SciPy ์ƒํƒœ๊ณ„๊ฐ€ ๋งค์šฐ ์ธ๊ธฐ๊ฐ€ ๋†’์•„์ ธ์„œ ๋ณ€๊ฒฝ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๋‹จ์ผ ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ฃผ์–ด์ง„ ๋ถ„์•ผ์—์„œ ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ๊ตฌํ˜„์ด ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ ์ง„ํ™”ํ•˜๋Š”์ง€, ์‹ค๋ฌด์ž์˜ ๊ธฐ์ˆ ์  ๋Šฅ๋ ฅ, ๊ทธ๋“ค์ด ์˜์กดํ•˜๋Š” ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด, ๊ทธ๋“ค์ด ์ฝ”๋“œ์— ํˆฌ์ž ํ•  ์ˆ˜์žˆ๋Š” ์ž์› ๋“ฑ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ NumPy ํ•ต์‹ฌ ํŒ€์€ ์•ˆ์ •์„ฑ๋ณด๋‹ค๋Š” ์ง„๋ณด (์ผ๋ถ€ ๋ถ„์•ผ์—์„œ๋Š” ์ค‘์š”ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋ถ„์•ผ์™€๋Š” ๊ฑฐ์˜ ๋ฌด๊ด€ ํ•œ ๋ฐฉํ–ฅ)์— ๋” ๊ด€์‹ฌ์„๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค ์„ธ๊ณ„์—์„œ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์›ํ•˜๋Š” ์ž‘์—…์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ์ธ์ƒ์€ NumPy์— ์˜์กดํ•˜๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋‹ค๋ฅธ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๊ฐœ๋ฐœ ํŒ€์—์„œ ๋ฒ„๋ฆผ์„ ๋Š๋ผ๋ฉฐ SciPy์—์„œ C ๋ฐ Fortran๊ณผ ๊ฐ™์€ ๋” ์ „ํ†ต์ ์ด๊ณ  ์•ˆ์ •์ ์ธ ๊ธฐ์ˆ ๋กœ ์ด๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” Matlab์—๋„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค).

๋‚˜๋Š” NumPy ์‚ฌ์šฉ์ž ์ค‘ ๋ช‡ ํผ์„ผํŠธ๊ฐ€ ํ˜„์žฌ ์ƒํ™ฉ์— ์ถฉ๋ถ„ํžˆ ๋ถˆ๋งŒ์กฑํ•˜๋Š”์ง€ ์•Œ์ง€ ๋ชปํ•˜๋ฉฐ, ๋‹ค๋ฅธ ๋ˆ„๊ตฌ๋„ ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง€๊ฐ€ ์ธํ”„๋ผ๊ฐ€๋˜๋ฉด ๋ˆ„๊ฐ€ ์˜์กดํ•˜๋Š”์ง€ ์‰ฝ๊ฒŒ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ธ์‹์กฐ์ฐจํ•˜์ง€ ๋ชปํ•˜๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด NumPy์— ์˜์กดํ•˜๋Š” ๋งŽ์€ ์ฝ”๋“œ (์ง๊ฐ„์ ‘ ์ )๋Š” ๊ณต๊ฐœ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์‰ฝ๊ฒŒ ๋ฐœ๊ฒฌ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

SciPy ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ์„ ํ–‰๋ณตํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ ค๋ฉด ๋‹ค์–‘ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌ ํ•  ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์— ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ํŠน์ • ์„ค์น˜์˜ ๋ณ€๊ฒฝ ์†๋„์— ๋Œ€ํ•œ ์ œ์–ด๊ถŒ์„ ๊ฐœ๋ฐœ์ž์—์„œ ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๊ฐ€๊นŒ์šด ์‚ฌ๋žŒ์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ตœ์ข… ์‚ฌ์šฉ์ž ์ž์‹ , ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž, ํŒจํ‚ค์ € ๋˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ด ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋ณดํŽธ์  ์ธ ๋Œ€๋‹ต์€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ์€ ์˜ฌ๋ฐ”๋ฅธ ์ˆ˜์ค€์˜ ์ •๋ณด์ด๋ฉฐ ์ด๊ฒƒ์ด ์ œ๊ฐ€์ด ์Šค๋ ˆ๋“œ๋ฅผ ์‹œ์ž‘ํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ์„ธ์ƒ์„ ๊ตฌํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ๋ณ€๊ฒฝ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๋ถ„์‚ฐ ์ฑ…์ž„์„ ์„ค์ •ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, ์—ฌ๋Ÿฌ๋ถ„ ์ค‘ ์ผ๋ถ€๋Š” ์ œ๊ฐ€ ์ œ ์ฝ”๋“œ์— ๋Œ€ํ•ด ๊ฐœ์ธ์ ์œผ๋กœ ์‹ธ์šฐ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ฐœ์ธ์ ์ธ ํƒœ๋„๊ฐ€ ๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ์˜นํ˜ธํ•˜๋Š” ํƒœ๋„๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์‚ฌ์‹ค์ด ๋†€๋ผ ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณ€ํ™”์œจ์— ๋Œ€ํ•œ ์ €๋งŒ์˜ ์Šค์œ— ์ŠคํŒŸ์€ ์ œ ๋ถ„์•ผ์—์„œ ํ”ํžˆ ๋ณผ ์ˆ˜์žˆ๋Š” ๊ฒƒ๊ณผ NumPy ํŒ€์—์„œ ๋„๋ฆฌ ํผ์ ธ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” ๊ฒƒ ์‚ฌ์ด์— ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์€ Python 3 ๋ฐ NumPy> 1.10์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. MMTK๋Š” 20 ์‚ด์ด๊ณ  ์ €๋Š” ์˜ค๋Š˜๋‚  ๋งŽ์€ ์ผ์„ ๋‹ค๋ฅด๊ฒŒํ•ฉ๋‹ˆ๋‹ค. MMTK์—์„œ ํŠน์ • ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ์ฝ”๋“œ ์กฐ๊ฐ์„ ๊ฐ€์ ธ์™€ "ํ˜„๋Œ€ SciPy"์— ์ ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ์ด๋Š” ์›๋ž˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ™•์‹ ์„ ๊ฐ€์ง€๊ณ  ์ˆ˜ํ–‰ ํ•  ์ˆ˜์žˆ๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‚ด ์ž์‹ ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋Œ€ํ•œ ์„œ๋น„์Šค๋กœ์„œ ์•ˆ์ •์ ์ธ MMTK๋ฅผ ์œ ์ง€ํ•ด ์™”๋Š”๋ฐ, ์ด๋Š” ๋‚ด๊ฐ€ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ๋Œ€๊ทœ๋ชจ ๋ณ€๊ฒฝ์„ ํ”ผํ•˜๋ฉด์„œ ์ตœ์†Œํ•œ์˜ ๋ฐฉ์‹์œผ๋กœ ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ์ˆ˜ํ–‰ ํ•œ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๋ฐ ๋„๋ฉ”์ธ ์œ ๋Šฅํ•œ ๊ฐœ๋ฐœ์ž๋ฅผ์œ„ํ•œ ์ž๊ธˆ์€ ๋ชจ๋‘ ์ฐพ๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต ๊ธฐ ๋•Œ๋ฌธ์— MMTK๋Š” ํ•ญ์ƒ 1 ๋ช…์˜ ์œ ์ง€ ๋ณด์ˆ˜ ์ž + ๋•Œ๋•Œ๋กœ ๊ธฐ์—ฌ์ž ํ”„๋กœ์ ํŠธ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. MMTK์— ์˜์กดํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ๊ฐ€ ์™„์ „ํžˆ ์œ ์ง€๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  MMTK๋ฅผ "ํ˜„๋Œ€์ ์ธ SciPy"๋กœ ํฌํŒ…ํ•˜๋Š” ๊ฒƒ์ด ๋ˆ„๊ตฌ์—๊ฒŒ๋„ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ๋‹ค ์ค„์ง€ ํ™•์‹  ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ์ฃผ๋ณ€์—์„œ ๋ณด๋Š” ๋Œ€๋ถ€๋ถ„์˜ Python ์ฝ”๋“œ, ์‹ฌ์ง€์–ด MMTK์™€ ์™„์ „ํžˆ ๊ด€๋ จ์ด์—†๋Š” ์ฝ”๋“œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ณ„์‚ฐ๊ณผ ์ฝ”๋”ฉ์ด ์•„๋‹Œ ์‹คํ—˜์ด ๊ด€์‹ฌ์˜ ์ดˆ์ ์—์žˆ๋Š” ์—ฐ๊ตฌ ์˜์—ญ์˜ ํ˜„์‹ค์ž…๋‹ˆ๋‹ค.

@xoviat oldnumeric ์˜ ํ…Œ์ŠคํŠธ ์ˆ˜๋Š” ์—„์ฒญ๋‚˜๊ฒŒ ์ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด NumPy 1.13์„ ํ†ต๊ณผํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์—์„œ ๋งŽ์€ ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฌ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ์‚ดํŽด๋ณธ C ํ™•์žฅ ๋ชจ๋“ˆ์€ ๋ง ๊ทธ๋Œ€๋กœ 20 ๋…„์ด ์ง€๋‚ฌ์œผ๋ฉฐ Python 1.4 ์šฉ์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋‹น์‹œ์—๋Š” Python-C ์ฝค๋ณด์˜ ๊ฐ€์žฅ ์ •๊ตํ•œ ์˜ˆ ์ค‘ ํ•˜๋‚˜์˜€์œผ๋ฉฐ ์‹ค์ œ๋กœ Numeric (pre-NumPy) ๋ฐ CPython ์ž์ฒด์˜ ์ดˆ๊ธฐ ๊ฐœ๋ฐœ์„ ํ˜•์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. .

์ €๋Š” ์˜ค๋Š˜์˜ API์™€ ์ง€์› ๋„๊ตฌ๊ฐ€ ํ›จ์”ฌ ๋” ์šฐ์ˆ˜ํ•˜๋‹ค๊ณ  ์ฒ˜์Œ์œผ๋กœ ๋งํ–ˆ์œผ๋ฉฐ ์•ž์œผ๋กœ๋„ ๊ณ„์† ๊ฐœ์„  ๋  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์ด ์•„๋ฌด๋ฆฌ ๊ตฌ์‹์ด๋“  ์ƒ๊ด€์—†์ด ๋‹จ์ˆœํžˆ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ตฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฉฐ ๊ทธ๋“ค๋„ ์กด์žฌํ•  ๊ถŒ๋ฆฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@rgommers ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ๋ณผ ์ˆ˜ ์—†๋‹ค๋Š” ์ฃผ์žฅ์„ ๋ฌด์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๋‚ด ์ฃผ๋ณ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค (ํ•ญ์ƒ ์ตœ์ข… ์‚ฌ์šฉ์ž๋Š” ์•„๋‹˜)์€ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ด…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋‹จ์ง€ ์ผ์ฃผ์ผ์— ํ•œ ๋ฒˆ "pip install --upgrade"๋ฅผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์‹ฌ์ง€์–ด ์ด๊ฒƒ์„ ๋ถ€์ฃผ์˜ ํ•œ ํƒœ๋„๋ผ๊ณ  ์ƒ๊ฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฃผ๋ณ€ ์‚ฌ๋žŒ๋“ค์ด ์ฃผ๋กœ Windows์—์„œ Anaconda๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋งค์šฐ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์–‘์„ฑ์˜ ์‹œ๋Œ€์— ๊ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๋„๊ตฌ์™€ ๊ทœ์น™์„ ์ฑ„ํƒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฐ ๋™์˜ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์˜ˆ, NodeJS๋Š” ๋” ๋‚˜์ฉ๋‹ˆ๋‹ค. ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ๋„ ์‰ฝ๊ฒŒ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๋ฅผ ํŒ”๋กœ์šฐํ•˜์ง€๋งŒ ๊ฐํžˆ ๋“คํ‚ค์ง€ ์•Š๋Š” ๋™๋ฃŒ๋กœ๋ถ€ํ„ฐ ์ „์ž ๋ฉ”์ผ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๋›ฐ์–ด๋‚œ ๋น„์œ ๋กœ :

"์ƒˆ ํ˜„๋ฏธ๊ฒฝ์„ ์‚ฌ์„œ ๋” ๋‚˜์€ ๊ณผํ•™์„ ํ•  ์ˆ˜์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ •๋ง ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€ ์ €์™€์ƒ์˜ํ•˜์ง€ ์•Š๊ณ  ํ•˜๋ฃป๋ฐค ์‚ฌ์ด์— ์ œ ํ˜„๋ฏธ๊ฒฝ์„ ๊ต์ฒดํ•˜๋Š” ๋ชจ์Šต์„๋ณด๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค."

๊ทธ๊ฒƒ์€ ๋ชจ๋‘ ์ž์‹ ์˜ ๋„๊ตฌ๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ํ•œ๋ฐค์ค‘์— ๋‹น์‹  ๋™๋ฃŒ์˜ ์‹คํ—˜์‹ค์— ์นจ์ž…ํ•˜์—ฌ ๊ทธ๋“ค์˜ numpy๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฐœ๋ผ ํด๋ผ ๋ฐ”๋„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค.

์—…๋ฐ์ดํŠธ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค (ํ•ญ์ƒ ์ตœ์ข… ์‚ฌ์šฉ์ž๋Š” ์•„๋‹˜)์€ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ด…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋‹จ์ง€ ์ผ์ฃผ์ผ์— ํ•œ ๋ฒˆ "pip install --upgrade"๋ฅผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์‹ฌ์ง€์–ด ์ด๊ฒƒ์„ ๋ถ€์ฃผ์˜ ํ•œ ํƒœ๋„๋ผ๊ณ  ์ƒ๊ฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž์ด๊ณ  ๋‹ค์–‘ํ•œ ์„ค์น˜ ๋ฐฉ๋ฒ•์˜ ์žฅ๋‹จ์ ์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋ฉด Python ์„ธ๊ณ„ (๋ฐ ์—„๊ฒฉํ•œ semver๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ)์—์„œ ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์‹ค์ œ๋กœ ์ดํ•ด (๋˜๋Š” ๊ต์œก)ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ NumPy ํ•ต์‹ฌ ํŒ€์€ ์•ˆ์ •์„ฑ๋ณด๋‹ค๋Š” ์ง„๋ณด (์ผ๋ถ€ ๋ถ„์•ผ์—์„œ๋Š” ์ค‘์š”ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋ถ„์•ผ์™€๋Š” ๊ฑฐ์˜ ๋ฌด๊ด€ ํ•œ ๋ฐฉํ–ฅ)์— ๋” ๊ด€์‹ฌ์„๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฏธ์•ˆํ•˜์ง€๋งŒ ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ NumPy ๊ฐœ๋ฐœ์„ ์ „ํ˜€ ๋”ฐ๋ฅด์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ๋งค์šฐ ํŠน๋ณ„ํ•œ ์•ˆ๊ฒฝ ์„ธํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. NumPy๋Š” ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์— ๋Œ€ํ•œ ๋งŽ์€ ์šฐ๋ ค๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ๊ธฐ์—ฌํ•˜๊ธฐ ๋งค์šฐ ์–ด๋ ค์šด ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์ƒˆ๋กœ์šด ๊ด€๋ฆฌ์ž๋ฅผ ์œ ์น˜ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช๋Š” ์ฃผ๋œ ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” Matlab์—๋„

Matlab์€ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋Š” ๊ฒƒ์œผ๋กœ ์œ ๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. Matlab์„ ์‚ฌ์šฉํ•œ ํ˜‘๋ ฅ ํ”„๋กœ์ ํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ์ž‘์—…์€ ๋ฌธ์„œํ™”์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ Microsoft Word์™€ ๋™์ผํ•˜๊ฒŒ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๋ฒ„์ „์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค. ํ–ฅ์ƒ๋œ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด NumPy๋กœ ์ „ํ™˜ ํ•œ ์‚ฌ๋žŒ๋“ค์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Matlab์—๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ํ˜ธํ™˜์„ฑ์€ ๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ƒํ™ฉ์ด ๋ฐ”๋€Œ ์—ˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋Ÿฌ๋‚˜ ์•ž์œผ๋กœ ํ˜ธํ™˜์„ฑ์— ๋„์›€์ด ๋  ์ˆ˜์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ž‘์—…์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” NEP์— ๋Œ€ํ•œ ํ˜„์žฌ ๋…ผ์˜์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. NumPy๊ฐ€ ๋” ์„ฑ์ˆ™ํ•ด ์กŒ์œผ๋ฏ€๋กœ ํ˜ธํ™˜์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ œ์•ˆ ๋  ๋•Œ NEP๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํŠนํžˆ NEP๊ฐ€ ๋” ๊ณต๊ฐœ๋˜๊ณ  ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๋‘˜์งธ, ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์—…์ด ์•„๋‹ˆ๋ผ๋ฉด PyPI์— ์ด์ „ NumPy ๋ฒ„์ „ ์šฉ ํœ ์„ ์˜ฌ๋ ค ๋†“์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ ํ™˜๊ฒฝ์˜ ์‚ฌ์šฉ์€ ์žฌํ˜„์„ฑ์„ ํ™•๋ณดํ•˜๊ธฐ์œ„ํ•œ ๊ฐ€์žฅ ์ข‹์€ ํ˜„์žฌ ์•„์ด๋””์–ด ์ธ ๊ฒƒ ๊ฐ™์œผ๋ฉฐ ๋‹ค์šด๋กœ๋“œ ํ•  ํœ ์„ ๋” ๋งŽ์ด ์„ ํƒํ•˜๋ฉด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘˜์งธ, ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์—…์ด ์•„๋‹ˆ๋ผ๋ฉด PyPI์— ์ด์ „ NumPy ๋ฒ„์ „ ์šฉ ํœ ์„ ์˜ฌ๋ ค ๋†“์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ matthew-brett์˜ ๋…ธ๋ ฅ ๋•๋ถ„์— ํ˜„์žฌ ์ƒํƒœ๋Š” Windows ํœ  ์ด 1.10 ์œผ๋กœ ๋Œ์•„๊ฐ€๊ณ  MacOS 1.7์ด ๋ˆ„๋ฝ ๋œ ๊ฒฝ์šฐ ์ œ์™ธ) Linux ๊ฐ€ 1.6์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค .

MacOS / Linux ์ƒํ™ฉ์€ ๊ฝค ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ๋” ๋งŽ์€ Windows ๋ฆด๋ฆฌ์Šค๋ฅผ ์ฑ„์šธ ์ˆ˜ ์žˆ์„๊นŒ์š”? Windows์˜ OTOH pip install ์€ (๋Š”) ์˜์›…์ ์ธ ๋…ธ๋ ฅ ์—†์ด๋Š” ์ผํ•œ ์ ์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์— ๋Œ€ํ•œ ๋งŽ์€ ์ฒญ์ค‘์ด ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ 2 ๋…„์˜ ๊ฐ€์น˜๊ฐ€ ์žˆ์œผ๋ฉฐ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์„ฑ์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์šฐ๋ฆฌ๊ฐ€ ์˜ค๋ž˜๋œ ๋ฐ”ํ€ด๋ฅผ ๋งˆ์ง€๋ง‰์œผ๋กœ ์—…๋กœ๋“œํ–ˆ์„ ๋•Œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ทธ๋“ค์˜ ์ž‘์—… ํ๋ฆ„์ด ๋ฐ”ํ€ด๊ฐ€ ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋œจ ๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ์—๊ฒŒ ํ™”๋ฅผ ๋ƒˆ์Šต๋‹ˆ๋‹ค :-)

๊ทธ ์ด์•ผ๊ธฐ๋ฅผ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€์ด ๋ถ€๋ถ„์„ ์ž˜ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๊ฐœ์„ ์„ ์‹œ๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (๊ทธ๊ฒŒ ๋ฌด์Šจ ๋œป์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค!). ์‚ฌ์‹ค์€ ์ฒœ์ฒœํžˆ ์ง„ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์†Œ์ˆ˜์˜ ์‚ฌ๋žŒ๋“ค์˜ ์ฝ”๋“œ๋ฅผ ๊นจ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ด๋„ˆ ๋ฆด๋ฆฌ์Šค๋Š” "๊ฑฐ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ์•„๋ฌด๊ฒƒ๋„ ์•Œ์•„ ์ฐจ๋ฆฌ์ง€ ์•Š๊ณ  ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค"๋Š” ์˜๋ฏธ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ์†”์งํžˆ ๊ทธ๊ฒŒ ์‚ฌ์‹ค์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. (๋ถ„๋ช…ํžˆ ์ •์ˆ˜ ๋น„์ถ”์ฒœ๊ณผ ๊ฐ™์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์š”์†Œ๊ฐ€ ์žˆ์ง€๋งŒ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์˜ค๋ž˜ ์ง€์†๋˜์—ˆ์Šต๋‹ˆ๋‹ค)

์†”์งํžˆ ์–ด๋–ค ๊ฒƒ์ด ๋ ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋ฉ”์ด์ € ๋ฒ„์ „์„ ์ฆ๊ฐ€์‹œํ‚ฌ๋งŒํผ ํฐ ๋ณ€ํ™”๊ฐ€ ์žˆ์—ˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋„ค, ์•„๋งˆ๋„ ๋ฉ”์ด์ € ๋ฆด๋ฆฌ์Šค์™€ ๊ด€๋ จํ•˜์—ฌ ์—ญ์‚ฌ์ ์ธ ๋ชจ๋ฉ˜ํ…€ ์†์‹ค์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ๋‚˜๋Š” ๋˜ํ•œ (๊ฑฐ์˜) ๋ชจ๋“  ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ฃผ์š” ๋ฆด๋ฆฌ์Šค๋ผ๊ณ  ๋งํ•˜๋Š” ํŒฌ์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์•ฝ๊ฐ„์˜ ๋ณ€ํ™”๋กœ ์‚ฌ๋žŒ๋“ค์„ ํ™”๋‚˜๊ฒŒ ํ• ์ง€๋„ ๋ชจ๋ฅธ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์ง€๋งŒ, ๋‚˜๋Š” ๋‹ค์†Œ ๊ด‘๋ฒ”์œ„ํ•œ ๋ณ€ํ™”์— ์ฐธ์—ฌํ–ˆ๊ณ , ๊ทธ๊ฒƒ์ด ์˜ณ์€ ์ผ์ด๋ผ๊ณ  ๋“ค์—ˆ์„ ๋ฟ์ด๋ผ๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๊ณ  ๋งค๋ฒˆ ์šฐ๋ฆฌ๋Š” ๊ธฐ๋‹ค๋ ธ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋  ๋•Œ๊นŒ์ง€ ๋ช‡ ๋…„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ปดํŒŒ์ผ / C ++์— ๋Œ€ํ•ด ๋งŽ์ด ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. gcc 4.8 ์ •๋„์— ์งœ์ฆ์ด ๋‚˜์„œ ์ผ๋ถ€ C ++ 11 ๊ธฐ๋Šฅ ๋•Œ๋ฌธ์— ํ”Œ๋ž˜๊ทธ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„ ๋‚ด๋„๋ก ๊ฐ•์š”ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ธฐ๋Œ€๋˜๋Š” ๊ฒƒ์€ ๋‹น์‹ ์ด numpy์— ๋Œ€ํ•ด ์–ป๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์ด๋ฉ”์ผ์— ๋งค์šฐ ์œ ์‚ฌํ•œ ๋ฐ˜์‘์„ ์œ ๋ฐœํ•˜๋ฏ€๋กœ ๊ทธ๋‹ค์ง€ ๋‹ค๋ฅธ์ง€ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. :).

์–ด์จŒ๋“ , ์—ฌ๊ธฐ์„œ ๋„ˆ๋ฌด ๋งŽ์ด ๋…ผ์˜ํ•˜๊ณ  ์‹ถ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋น ๋ฅด๊ฑฐ๋‚˜ ์ถฉ๋ถ„ํžˆ ์กฐ์‹ฌํ•˜์ง€ ์•Š๋Š”์ง€์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ์ฃผ ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์ง€๋Š” ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ. ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” 1.13๊ณผ 1.6์ด ์–ด๋–ค ์˜๋ฏธ์—์„œ ์ ์–ด๋„ ํ•˜๋‚˜์˜ ๋ฉ”์ด์ € ๋ฒ„์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ๊ทธ ์‚ฌ์ด์— ๋‚ด๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ๋งํ•  ์ˆ˜์žˆ๋Š” ๋‹จ์ผ ๋ฆด๋ฆฌ์Šค๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งŽ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฃผ์š” ํ˜ธํ™˜์„ฑ ์ค‘๋‹จ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ์ฝ”๋“œ์—์„œ "Lets do this in Numpy 2 ์•„๋งˆ๋„"๋ผ๋Š” ์ฃผ์„์„ ์ฝ์€ ๊ธฐ์–ต์ด๋‚ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ ์–ด๋–ค ๊ฒƒ์ด ๋“  ๊นจ์ง€๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋‘๋ ค์›€ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด numpy๊ฐ€ ๋งŽ์ด ๋ฉˆ์ท„ ์„๊นŒ ๋ด ๋‘๋ ค์›Œ์š”. ์†”์งํžˆ ์ €๋Š” ์ผ๋ถ€๊ฐ€ ๋œ ๊ฒƒ์„ ์ž๋ž‘์Šค๋Ÿฝ๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ์ ์–ด๋„ ๋‹ค์‹œ ๋” ํ™œ๋™์ ์ธ ๋‹จ๊ณ„์ฒ˜๋Ÿผ ๋ณด์˜€๊ณ , ์šฐ๋ฆฌ๊ฐ€ ๋” ๋ณด์ˆ˜์  ์ด์—ˆ๋‹ค๋ฉด ํž˜๋“ค์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. (๋‚ด๊ฐ€ ์˜ค๊ธฐ ์ „์— ๋ฌด์Šจ ์ผ์ด ์ผ์–ด ๋‚ฌ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํŽธํ–ฅ๋˜์–ด์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)).

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฑด ๋ง์ด ์•ˆ ๋ผ์š” (๋ฐฉ๊ธˆ ํฌ๋ฆฌ์Šค๋งˆ์Šค ํŒŒํ‹ฐ๋ฅผ ํ–ˆ์–ด์š”) semver ์ œ์•ˆ์€ ๋ง์ด๋˜์ง€๋งŒ ์‹ค์ œ ํ•ด๊ฒฐ์ฑ…์ฒ˜๋Ÿผ ๋Š๊ปด์ง€์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋” ์ ๊ทน์ ์œผ๋กœ ๋ฉ”์ด์ € ๋ฒ„์ „์„ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์— ๋™์˜ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ฉ”์ด์ € ๋ฆด๋ฆฌ์Šค๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์— ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ์ข€ ๋” ๋ณด์ˆ˜์ ์ด ๋˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๋Š” ๊ฒƒ์— ๋™์˜ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์†”์งํžˆ ๊ทธ๊ฒŒ ๋ญ”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (์–ด๋”˜๊ฐ€์—์„œ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋œจ๋ฆด ์ˆ˜ ์žˆ๋Š”์ง€ ์•„๋ฌด๋„ ํ™•์‹คํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋งค๋‹ฌ๋ฆฐ PR์˜ ์ˆ˜๋ฅผ ์„ธ์–ด๋ณด์„ธ์š”.). ์ข‹์€ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค)?

๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ๋ถˆํ‰์„ ์ฝ๋”๋ผ๋„ ์•ฝ๊ฐ„์˜ ๋„์ฒญ๊ณผ ์ฃผ์žฅ์„ ๊ฐ€์ ธ ์˜ค๋ฉด ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋ชจ๋“  ๋ณ€๊ฒฝ์„ ์ทจ์†Œํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ ์–ด๋„ 1 ๋…„ ์ด์ƒ ์ง€์—ฐ์‹œํ‚ค์ง€ ์•Š๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋ณด์ˆ˜์  ๊ฑฐ๋ฒ„๋„Œ์Šค ๋ชจ๋ธ์„ ์„ ํƒํ•œ ์ด์œ ์˜ ์ผ๋ถ€๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹คโ€ฆ.

๊ทธ๋ž˜์„œ ์˜ค๋žซ๋™์•ˆ ์˜น์•Œ์ด๋ฅผ ํ•œ ํ›„ :

  • "๊ฑฐ์˜ ์•„๋ฌด๋„ ์ฝ”๋“œ๊ฐ€ ๊นจ์ง€์ง€ ์•Š๋Š”๋‹ค"๋Š” ๋งˆ์ด๋„ˆ ๋ฒ„์ „์—์„œ๋Š” ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๊นŒ?
  • ์ฒœ์ฒœํžˆ ์ „์ง„ํ•ด์•ผํ•˜๋‚˜์š”?
  • ๊ฒฐ๊ตญ ์ƒํ™ฉ์ด ๊นจ์งˆ ๊ฒƒ์ด๊ณ  ๋•Œ๋กœ๋Š” ๋ฉ”์ด์ € ๋ฒ„์ „์„ ๋Š˜๋ฆด ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋ฉ”์ด์ € ๋ฒ„์ „์—์„œ ๋” ๋งŽ์ด ๋ณ€๊ฒฝ๋˜๋Š” FutureWarning ์œ ํ˜•์„ ์‹œ๋„ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. (์†”์งํžˆ ๊ทธ๊ฒƒ์ด ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์ง€ ์•Š์ง€๋งŒ ๊ธฐ๊บผ์ด ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค)

๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ขŒ์ ˆ๊ฐ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ์—๊ฒŒ ์ง„์ •ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๊ฐ€ ์ฃผ ๋ฒ„์ „์„ ๊ณต๊ฒฉ์ ์œผ๋กœ ์˜ฌ๋ฆฌ๋ฉด ๋” ์ ์€ ์ด๋ฉ”์ผ์„๋ฐ›์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

@xoviat ์ด์ „ ๋ฒ„์ „์˜ ํœ  ์—…๋กœ๋“œ์— ๋Œ€ํ•œ ๋ถˆ๋งŒ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ # 7570์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” semver ์ •์˜ (์›๋ž˜ ๊ฒŒ์‹œ๋ฌผ์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ๋” ์ด์ƒ ์ฐพ์„ ์ˆ˜ ์—†์Œ) :

  • major : ์˜๋„์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ฝ”๋“œ๋ฅผ ์œ„๋ฐ˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒฝ๋ฏธ : ์‹ค์ˆ˜๋กœ ์‚ฌ์šฉ์ž ์ฝ”๋“œ๋ฅผ ์œ„๋ฐ˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํŒจ์น˜ : ์šฐ๋ฆฌ๋Š” ๋งˆ์ง€๋ง‰ ๋งˆ์ด๋„ˆ ๋ฆด๋ฆฌ์Šค์˜ ๋ฒ„๊ทธ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊นจ๋œจ ๋ ธ์Šต๋‹ˆ๋‹ค.

์•ฝ๊ฐ„ ๊ฑด๋ฐฉ์ง„ํ•˜์ง€๋งŒ ์ˆ˜์ž…ํ’ˆ์— ๋Œ€ํ•œ ํžˆํŠธ๋Š” _any_ ํ–‰๋™์˜ ๋ณ€ํ™”๊ฐ€ ์ผ๋ถ€ ์‚ฌ์šฉ์ž๋ฅผ ์–ด๋”˜๊ฐ€์— ๋ง๊ฐ€๋œจ๋ฆด ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” API ํ‘œ๋ฉด์ด ํฐ ํ”„๋กœ์ ํŠธ์—์„œ ํŠนํžˆ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์ œ ์ƒ๊ฐ์— ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ํŠน์ • ์„ค์น˜์˜ ๋ณ€๊ฒฝ ์†๋„์— ๋Œ€ํ•œ ์ œ์–ด๊ถŒ์„ ๊ฐœ๋ฐœ์ž์—์„œ ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๊ฐ€๊นŒ์šด ์‚ฌ๋žŒ์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋Œ€ํ™”์—์„œ ๋น ์ง„ ์ ์€ ์ด์ „ ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•ญ์ƒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค (์†Œ์Šค์˜ pypi์—์„œ). ๋”ฐ๋ผ์„œ ์ด์ „ ๋ฒ„์ „์˜ python / numpy / matplotlib๊ฐ€ ํ•„์š”ํ•œ ์ฝ”๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ์ด์ „ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ํ™˜๊ฒฝ์€ ์ด๊ฒƒ์„ ๊ด€๋ฆฌํ•˜๊ธฐ์— ๋„ˆ๋ฌด ๋”์ฐํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ƒˆ ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋“œ๋Š” ๋น„์šฉ์„ ์ง€๋ถˆํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํ˜„๋ฏธ๊ฒฝ ๋น„์œ ๋ฅผ ๊ณ„์†ํ•˜๋ ค๋ฉด ํ˜„๋ฏธ๊ฒฝ์„ ์ •๊ธฐ์ ์œผ๋กœ ์œ ์ง€ ๊ด€๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด๋„ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@njsmith ๊ฝค ์žฌ๋ฐŒ ๋„ค์š”. IMO # 7570์€ ์œ ํšจํ•œ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
NumPy๋Š” manylinux wheel ์‚ฌ์–‘์„ ์ค€์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ”ํ€ด
์‹œ๊ฐ„์ด ๋ฌด๋ฃŒ๋ผ๋Š” ๊ฐ€์ •ํ•˜์— ์ด์ „ ๋ฒ„์ „ ์šฉ์œผ๋กœ ์—…๋กœ๋“œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์–ด์ง„
์‹œ๊ฐ„์€ ์ž์œ ๋กญ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๋ฐ”ํ€ด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„
์›ํ•˜๋Š” ๊ฒฝ์šฐ ํŠน์ • ๋ฒ„์ „์˜ NumPy๋ฅผ ์œ„ํ•ด; PR ์ œ์ถœ
numpy-wheels ์ €์žฅ์†Œ. ์•„๋‹˜.

@xoviat ๋‚ด ๋ง์€, ๊ทธ๋“ค์˜ ์‹œ์Šคํ…œ์ด ๊ณ ์žฅ

@njsmith ํ˜„๋ฏธ๊ฒฝ ๋น„์œ ์—์„œ ๊ท€ํ•˜์˜ ์—ญํ• ์€ ๋‚ด ๋™๋ฃŒ์˜ ์‹คํ—˜์‹ค ์ฑ…์ž„์ž์—๊ฒŒ ์ ‘๊ทผํ•˜์—ฌ ๋ชจ๋“  ์‹คํ—˜์‹ค ํ˜„๋ฏธ๊ฒฝ์„ ๊ทธ์˜ ์ตœ์‹  ๋ชจ๋ธ๋กœ ๊ต์ฒดํ•˜๊ณ  ์ž‘์€ ๊ธ€์”จ์— "1mm ์ด์ƒ์˜ ์ƒ˜ํ”Œ๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š์Œ"์ด๋ผ๋Š” ๋ฌธ์žฅ์„ ์ˆจ๊ธฐ๋Š” ์ œ์•ˆ์„ํ•˜๋Š” ํ˜„๋ฏธ๊ฒฝ ํŒ๋งค์›์˜ ์—ญํ• ์ž…๋‹ˆ๋‹ค. ๊ณ„์•ฝ์˜. ์ด๋กœ ์ธํ•ด ๋žฉ ๋””๋ ‰ํ„ฐ๋Š” ์ด๋Ÿฌํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ดํ•ดํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๊ณผ ๋…ผ์˜ํ•ด์•ผ ํ•  ๊ธฐ์ˆ ์  ์š”์ ์ด ์žˆ์Œ์„ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

@rgommers ๋‚˜๋Š” NumPy๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด

๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ, ๋‚˜๋Š” ๋งค์šฐ ํŠน๋ณ„ํ•œ ์•ˆ๊ฒฝ ์„ธํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ํ™•์‹คํžˆ ์ธ์ •ํ•˜์ง€๋งŒ,์ด ํ† ๋ก ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. ์ œ ์•ˆ๊ฒฝ์€ ์ œ ์ž‘์—… ํ™˜๊ฒฝ ์ธ "์ „ํ†ต์ ์ธ ๊ณผํ•™ ์ปดํ“จํŒ…"์˜ ์•ˆ๊ฒฝ์ž…๋‹ˆ๋‹ค. ๊ธฐ์ค€ (๊ธฐ๋ณธ ๊ธฐ๋Œ€)์€ ์—…๋ฐ์ดํŠธ๊ฐ€ ์˜๋„์ ์œผ๋กœ ์–ด๋–ค ๊ฒƒ๋„ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํ‘œ์ค€ํ™” ๋œ ์–ธ์–ด (C, Fortran)์˜ ์ •์ฑ…์ด์ง€๋งŒ ์ธํ”„๋ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (BLAS, LAPACK, MPI, ...)์˜ ์ •์ฑ…์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ˜์‹ ์€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค (์˜ˆ : ATLAS). ๊ทธ๊ฒƒ์ด ๋ณด์ˆ˜์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด, ๋‚ด ์„ธ๊ณ„์—์„œ ๋ณด์ˆ˜์  ์˜๋ฏธ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋ฒ„๊ทธ๊ฐ€ ์•Œ๋ ค์ ธ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ ์–ด๋„ 2 ๋…„์ด๋˜์ง€ ์•Š์€ ๋ฒ„์ „์€ ์„ค์น˜ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ด๋Š” ์‹œ๊ฐ„์ด ๋งค์šฐ ๋น„์‹ธ๊ณ  ๊ทธ ์ด์œ  ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ๋ฅผ ๊ฑฐ์˜ ํ™•์ธํ•  ์ˆ˜์—†๋Š” ์Šˆํผ ์ปดํ“จํ„ฐ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์ •์ฑ…์ž…๋‹ˆ๋‹ค.

NumPy๊ฐ€ ๋‚ด ์„ธ๊ณ„์˜ ๊ธฐ๋ณธ ๊ธฐ๋Œ€์น˜๋ฅผ ์ฑ„ํƒํ•ด์•ผํ•œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹จ์ง€ ๊ทธ๊ฒƒ์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ๋ถ„๋ช…ํžˆ ๋‚˜ํƒ€๋‚ด์•ผํ•œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@seberg "๊ฑฐ์˜ ์•„๋ฌด๋„ ์ฝ”๋“œ๊ฐ€ ๊นจ์ง€์ง€ ์•Š๋Š”๋‹ค"๋Š” ์ด๋ก ์ƒ ๋ถ€ ๋ฒ„์ „์˜ ๊ฒฝ์šฐ ๊ดœ์ฐฎ์•„ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ธํ”„๋ผ ์ƒํƒœ๋ฅผ ํš๋“ํ•˜๋ฉด (๋‚ด ์ƒ๊ฐ์—๋Š” NumPy๊ฐ€ ํ•ด๋‹น ์ˆ˜์ค€์— ์žˆ์Œ) ์˜ํ–ฅ์„๋ฐ›์„ ์ˆ˜์žˆ๋Š” ๊ฐœ๋ฐœ์ž์™€ ์‚ฌ์šฉ์ž ์ˆ˜๋ฅผ ์ถ”์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ธฐ์ค€์€ ํ•ญ์ƒ "๋‚ด๊ฐ€ ์ƒ๊ฐํ•  ์ˆ˜์žˆ๋Š” ์‚ฌ๋žŒ์€ ๊ฑฐ์˜ ์˜ํ–ฅ์„๋ฐ›์ง€ ์•Š๋Š”๋‹ค"๊ฐ€๋˜๋ฉฐ ์ด๋Š” ์ข‹์€ ๊ธฐ์ค€์ด ์•„๋‹™๋‹ˆ๋‹ค.

@tacaswell ์ €๋Š” "

์Œ, ์†”์งํžˆ "์ฃผ์š” ์žฌ๊ฐœ๋ฐœ"์•„์ด๋””์–ด๋Š” ํ›จ์”ฌ ๋” ๋งŽ์€ ๊ฐœ๋ฐœ ๋Šฅ๋ ฅ์„ ํ•„์š”๋กœํ•˜๊ณ  ์™„์ „ํžˆ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ํ˜ผ๋ž€์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ๊ฑฐ์˜ ํฌ๊ธฐ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (์ฒ˜์Œ ๋ช‡ ๋…„ ๋™์•ˆ py2 ๋ฐ py3 ์ฐธ์กฐ)?

๋™์˜, numpy๋Š” ์ธํ”„๋ผ์ด์ง€๋งŒ ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์˜ ์ฝ”๋“œ๋ฅผ ๊นจ๋Š” ๊ฒƒ์ด ๊ดœ์ฐฎ์€ ๊ฒƒ์ฒ˜๋Ÿผ ํ–‰๋™ํ•˜๋Š” ํŒฌ์ด ์•„๋‹™๋‹ˆ๋‹ค. "์•„๋ฌด๋„ ์ฝ”๋“œ๊ฐ€ ๊นจ์ง€์ง€ ์•Š๋Š”"๋ฆด๋ฆฌ์Šค ( "๋ช‡ ๋ฒˆ์˜ ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๋ฅผ ๋ณด์ง€ ์•Š์€ ๊ฒฝ์šฐ"์˜ˆ์™ธ)๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์„ ์„ ๋‹คํ•˜๋Š” ์ž‘์—…์„ ํฌ๊ธฐํ•˜๊ณ  ์‹ค์ œ๋กœ ๊ฒฐ์ •์— ๋„์›€์ด๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ.

๊ทธ๋ž˜์„œ ๋•Œ๋•Œ๋กœ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ์‚ฌ์‹ค์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๋” ์ด์ƒ ๊นจ์ง€์ง€ ์•Š๋„๋ก ํ•ด๊ฒฐ์ฑ…์„ ์–ป๋Š” ๊ฒƒ์„ ํ›จ์”ฌ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋‹น์‹ ์€ ํ•ด๊ฒฐ์ฑ…์„ ์ œ์‹œํ–ˆ์ง€๋งŒ (๋งค์šฐ ๋ณด์ˆ˜์ ์ด๋ฉฐ ๋Œ€๋Œ€์  ์ธ ์ •๋น„๋ฅผ ํ†ตํ•ด numpy 2๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค),์ด ํ•ด๊ฒฐ์ฑ…์ด ํฐ ์ž๊ธˆ ์—†์ด๋Š” ์‹คํ˜„ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•˜๋ฉด, ์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜๋Š” ๋ช…ํ™•ํ•˜๊ฒŒ ๋ง ํ•ด์ฃผ์„ธ์š” : ํ•„์š”ํ•  ๋•Œ ๋” ๋ณด์ˆ˜์  ์ธ ์‚ฌ๋žŒ์ด๋˜๊ธฐ ์œ„ํ•ด ์ฃผ์‹œ ํ•  ์ˆ˜์žˆ๋Š” numpy dev๋ฅผ ํŒ”๋กœ์šฐ ํ•  ์ˆ˜์žˆ๋Š” ์‚ฌ๋žŒ์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ ์–ด๋„ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๋ฏธ๋ž˜์˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด numpy์˜ ๋” ์–ด๋‘์šด ๋ชจ์„œ๋ฆฌ๋ฅผ ์ฒœ์ฒœํžˆ ์ œ๊ฑฐํ•˜๋Š” ์šฐ๋ฆฌ์˜ ์ง„ํ–‰์„ ํฌ๊ธฐํ•˜๋Š” ๊ฒƒ์„ ๊ฐ์‚ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๊ปํ•ด์•ผ ๋ช‡ ๋…„ ์•ˆ์— ์ฃฝ์€ NumPy์™€ ๊ต์ฒด๋กœ ๋๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ตœ์•…์˜ ๊ฒฝ์šฐ ์šฐ๋ฆฌ๋Š” ์•ž์œผ๋กœ ๋‚˜์•„๊ฐˆ ์ˆ˜์—†๊ณ  ์•„๋งˆ๋„ "๋Œ€์ฒด"๊ฐ€ ๋‹์•„๋‚˜๊ฒŒ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ์‹ค๋งํ•˜๊ณ  ๋‹ค์šด ์ŠคํŠธ๋ฆผ์— ์ขŒ์ ˆํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฑฐ์˜ ์„ฑ์ˆ™ํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒํ™ฉ์ด ์•…ํ™”๋ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด @seberg ์™€ ๋™์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ
์ด ์•„์ด๋””์–ด์˜ ์ „์ฒด์ ์ธ ๊ฐ€์ •์€ NumPy ํ”„๋กœ์ ํŠธ๊ฐ€
๋ชจ๋‘๋ฅผ ์œ„ํ•ด ์ผํ•˜๋Š” ๋„์„œ๊ด€์„ ์œ ์ง€ํ•˜๊ธฐ์œ„ํ•œ ์žฌ๋Šฅ๊ณผ ์ž์›.
๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์™„๋ฒฝํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ
์ฒ˜์Œ์œผ๋กœ ์ž˜๋ชป ์ดํ•ดํ•˜์‹ญ์‹œ์˜ค. ์›๋ž˜ ์ˆซ์ž ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์‚ฌ๋žŒ๋“ค
์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์—ˆ๊ณ 
PyPy์™€ ๊ฐ™์€ ๋Œ€์ฒด ๊ตฌํ˜„์˜ ๋“ฑ์žฅ์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

API ์•ˆ์ •์„ฑ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ NumPy๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค
์ผ๋ฐ˜์ ์œผ๋กœ ์˜ณ์•˜์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ์˜ ์‚ฌ์‹ค์€ NumPy๊ฐ€ ์ด๋ฏธ
์ถ”๋ก ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
์„ฑ๋Šฅ์ด ์ค‘์š” ํ•จ),ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๋ฉด
์ฝ”๋“œ ๋ณ€๊ฒฝ์˜ ๋ชจ๋“  ์˜๋ฏธ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
๋„ˆ์˜ ๋จธ๋ฆฌ. NumPy๊ฐ€ ๊ทธ๋ ‡๊ฒŒํ–ˆ๋‹ค๋ฉด
๊ฐœ๋ฐœ์ž๊ฐ€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ›จ์”ฌ ๋” ๋งŽ์€ ๋ฒ„๊ทธ๊ฐ€
ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ฝ”๋“œ ๋ณ€๊ฒฝ์˜ ๊ฒฐ๊ณผ.

์š”์•ฝํ•˜๋ฉด ์‚ฌ๋žŒ๋“ค์˜ ์ขŒ์ ˆ๊ฐ์„ ์™„์ „ํžˆ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ @njsmith๋กœ
๋ชจ๋“  ์‚ฌ์šฉ์ž๋ฅผ ๋งŒ์กฑ์‹œํ‚ฌ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์—†์Šต๋‹ˆ๋‹ค.
๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋ฅผ ๋งŒ์กฑ์‹œํ‚ฌ ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณผ
ํ˜„์‹ค์€ NumPy๊ฐ€ ์†Œ์ˆ˜์˜ ์‚ฌ์šฉ์ž (
๊ฒฝ๋ฉธ์ ์ธ ๋ฐฉ์‹์œผ๋กœ) ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ๋ณด๋‹ค API ์•ˆ์ •์„ฑ์„ ์š”๊ตฌํ–ˆ์Šต๋‹ˆ๋‹ค.
NUMFOCUS ์ž๊ธˆ์€ ๋ˆ์ด ๋ฌด์—‡์ธ์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ๊ฐˆ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์šฐ๋ฆฌ๋Š” ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋งˆ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ
MMTK๋Š” ๋” ์ด์ƒ NumPy์— ์˜์กด ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋” ์ด์ƒ ์ˆซ์ž์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ฝ”๋“œ๋ฅผ ์ตœ์†Œ ์œ ์ง€ ๊ด€๋ฆฌ ๋ชจ๋“œ๋กœ ์„ค์ •ํ•˜๊ณ  ๋‹ค๋ฅธ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค์—์„œ ๋Œ€๋Œ€์  ์ธ ์žฌ ์„ค๊ณ„๋ฅผ ์‹œ์ž‘ํ•˜์—ฌ ๋ฒ„ํผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ด์ „๊ณผ ์ƒˆ๊ฐ€ ์ƒํ˜ธ ์šด์šฉ์„ฑ๊ณผ ๋ฌด๊ธฐํ•œ ๊ณต์กดํ•˜๋„๋กํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜ˆ, ์ €๋Š” ์ด๊ฒƒ์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ ์‚ฌ์†Œํ•œ ๋…ธ๋ ฅ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ถ•์  ๋œ ๊ธฐ์ˆ  ๋ถ€์ฑ„ ๋”๋ฏธ์—์„œ ๋ฒ—์–ด๋‚  ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์žฌ ์„ค๊ณ„์˜ ์ฃผ์š” ๋ชฉํ‘œ๋Š” ์œ ์ง€ ๊ด€๋ฆฌ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‹ค์ œ๋กœ ๋‹น์‹ ๊ณผ ๋™์˜ํ•˜์ง€๋งŒ ์ž๊ธˆ / ๋น„์ „์˜ ํฐ ์ฃผ์ž… ์—†์ด๋Š” ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์‹คํ˜„ ๊ฐ€๋Šฅํ•œ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. NumPy๋Š” ๊ฑฐ๋Œ€ํ•œ ์ž‘์—…์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ @teoliphant ์™€ @skrah ๋Š” ๋‚ผ ๊ฒƒ์ด์ง€๋งŒ ๊ทธ๊ฒƒ์€ ํž˜๋“  ์ „ํˆฌ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” NumPy๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ, ์šฐ๋ฆฌ๊ฐ€ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ๋งŒ ํผ ์ž˜ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

"์˜ˆ"๋ผ๊ณ  ๋‹ตํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•œ ์ ์ด์žˆ๋Š” numpy ์ด์™ธ์˜ ์†Œํ”„ํŠธ์›จ์–ด ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

django๋Š” ์‹œ๋งจํ‹ฑ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋˜ ๋‹ค๋ฅธ ์ฃผ๋ชฉํ• ๋งŒํ•œ ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ƒ๋‹นํ•œ ์ค‘๋‹จ์„ ๋‚˜ํƒ€ ๋‚ด๊ธฐ ์œ„ํ•ด ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์žฅ๊ธฐ๊ฐ„์˜ ๊ฒฝ๊ณ  ํ›„์— .x ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. NumPy์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‹ค์ œ๋กœ ๋‹น์‹ ๊ณผ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

@shoyer ๊ด€์‹ฌ์ด

์ด๊ฒƒ์ด ํ‘œ์ค€ํ™” ๋œ ์–ธ์–ด (C, Fortran)์˜ ์ •์ฑ…์ด์ง€๋งŒ ์ธํ”„๋ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (BLAS, LAPACK, MPI, ...)์˜ ์ •์ฑ…์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ˜์‹ ์€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค (์˜ˆ : ATLAS).

LAPACK / ATLAS / OpenBLAS์˜ ์†๋„์— ๋”ฐ๋ฅธ ํ˜์‹ ์€ NumPy๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋นจ๋ฆฌ ๋ฌด์˜๋ฏธ ํ•ด์ง€๋Š” ๋น„๊ฒฐ์ž…๋‹ˆ๋‹ค.

์ด ๋ฒ„์ „ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ๋ชจ๋“  ์‘๋‹ต์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ๋ถ„๋ช…ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ~ 7 ๋ช…์˜ ํ™œ์„ฑ ์ฝ”์–ด ๊ฐœ๋ฐœ์ž์™€ ์ฃผ์š” ๋‹ค์šด ์ŠคํŠธ๋ฆผ ํ”„๋กœ์ ํŠธ์˜ ์ผ๋ถ€ ๊ฐœ๋ฐœ์ž ๊ฐ„์˜ ํ•ฉ์˜์ž…๋‹ˆ๋‹ค. ์ ˆ๋Œ€์ ์ธ ์•ˆ์ •์„ฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ช‡ ๋…„ ๋™์•ˆ ์‹œ์Šคํ…œ์— ๊ณ ์ • ๋ฒ„์ „์„ ๊ณ ์ •ํ•˜๊ณ  ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ด์— ๋Œ€ํ•ด ๊ต์œกํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

์–ธ์  ๊ฐ€๋Š” ์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ๋งค์šฐ ๊ณ ํ†ต์Šค๋Ÿฌ์šด py3k์™€ ๊ฐ™์€ ์ „ํ™˜์ด๋˜์ง€ ์•Š์„๊นŒ์š”?

๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ Python 3์ด (Python ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ) all / nothing ์Šค์œ„์น˜ ์ธ ๋ฐ˜๋ฉด, ๋‹ค๋ฅธ ndarray ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ˜ผํ•ฉ / ๋งค์น˜ํ•˜๋Š” ๊ฒƒ์€ ์‰ฌ์šฐ๊ฑฐ๋‚˜ ์ ์–ด๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฒ„ํผ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ณต์‚ฌ๋ณธ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์•ž๋’ค๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. np.asarray() ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜์— ์ž…๋ ฅ์„ ๊ฐ•์ œํ•˜๋ฉด ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์Šค์œ„์น˜๋กœ ์ž‘์—…ํ•˜๋Š” ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์•Œ์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ˆซ์ž / numarray / numpy์˜ ๋ฐ˜๋ณต๋˜๋Š” ๋ถ€๋ถ„์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.
๋ณ„๋กœ ์ฆ๊ฒ์ง€ ์•Š์€ ๊ฒฝํ—˜์ด์—ˆ์Šต๋‹ˆ๋‹ค (๋ฒ„ํผ ์ธํ„ฐํŽ˜์ด์Šค๋Š”
ํ•˜์ง€๋งŒ ๊ทธ๋Ÿฌํ•œ ์ „ํ™˜์—๋Š” ์—ฌ์ „ํžˆ ์ˆ˜๋™ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋ชจ๋“  ๊ฒƒ์ด ์‚ฌ์†Œํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.) ๊ทธ๊ฒƒ์€ ๋˜ํ•œ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค
Scipy์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ "์ƒˆ ์–ด๋ ˆ์ด"์—†์ด "์—…๊ทธ๋ ˆ์ด๋“œ"
์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๊นจ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋Š”
๋‹ค๋ฅธ ๋„์„œ๊ด€์ด ์œ ์‚ฌํ•œ ๊ฒฐ์ •์„ ๋‚ด ๋ฆฌ๋„๋ก ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค.
์˜ค๋ž˜๋œ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๋ฅผ ๋ฒ„๋ฆฌ์‹ญ์‹œ์˜ค.

๋ชจ๋“  ์‚ฌ๋žŒ์ด np.asarray ์ž…๋ ฅ์„ ๊ฐ•์š”ํ–ˆ๋‹ค๋ฉด np.matrix ๋Š” ๋ฌธ์ œ๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค :-).

๋‹ค๋ฅธ ๋ฐฐ์—ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ duck ์œ ํ˜•์— ๋™์˜ ํ•  ์ˆ˜ ์žˆ๊ณ  ๋ฒ„ํผ ํ”„๋กœํ† ์ฝœ์ด ํ‘œํ˜„ํ•  ์ˆ˜์žˆ๋Š” dtypes๋กœ ์ œํ•œํ•˜๋ฉด ์ž‘๋™ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์žฌ ์ž‘์„ฑ์˜ ์š”์ ์ด ๋ฐฐ์—ด ๊ฐ์ฒด์—์„œ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ƒˆ๋กœ์šด dtype์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ... ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ์˜ˆ : ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์žฌ ์ž‘์„ฑ์—์„œ ์ˆ˜์ •ํ•ด์•ผ ํ•  ํ•œ ๊ฐ€์ง€ ๋ถ„๋ช…ํ•œ ๊ฒƒ์€ ๊ณ ์ฐจ์› ์ž…๋ ฅ์—์„œ ndarray.dot ์˜ ๋™์ž‘์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ def f(a, b): a.dot(b) ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค๋ฉด ์ž ์žฌ์ ์œผ๋กœ ์†์ƒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ numpy์ธ์ง€ ์—ฌ๋ถ€๋Š” ์‹ค์ œ๋กœ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ํ•œ ๋ฒˆ์˜ ๋น…๋ฑ…์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ณ , ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋ ‡๊ฒŒํ•˜๋Š” ๋™์•ˆ ๊ฐœ๋ฐœ์ž์˜ ๊ด€์‹ฌ์„ ์œ ์ง€ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ถˆ๊ฐ€๋Šฅ์„ฑ์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ์˜ ์ฆ๋ถ„ ํ”ผ๋“œ๋ฐฑ. ๋‚˜๋Š” dynd๊ฐ€ ์—ฌ๊ธฐ์„œ ์œ ์ตํ•œ ์˜ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@rgommers ๋‚ด๊ฐ€ ์“ด ๊ธ€์„ ๋‹ค์‹œ ์ฝ์œผ์‹ญ์‹œ์˜ค. ๋ฐ˜๋ณต ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . NumPy๊ฐ€ LAPACK์˜ ์†๋„๋ฅผ ์ฑ„ํƒํ•ด์•ผํ•œ๋‹ค๊ณ  ์ œ์•ˆํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ทธ๋ ‡๊ฒŒ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค (์ฆ‰, ๋‚ด ํ™˜๊ฒฝ์—์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์˜ 80 %)์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ถ„๋ช…ํ•˜๊ฒŒ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ผ ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

@njsmith ๋‚ด๊ฐ€๋ณด๊ธฐ์— ์žฌ ์„ค๊ณ„์˜ ์ฃผ์š” ์ธก๋ฉด์€ OO๋ฅผ ํฌ๊ธฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹จ์ผ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์ž‘๋™ํ•˜๋Š” ์ˆ˜๋งŽ์€ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์•„๋‹™๋‹ˆ๋‹ค. np.dot(a, b) ์“ฐ๋ฉด ์„ค๋ช…ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ฆ‰์‹œ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์›ํ•˜๋Š”๋งŒํผ์˜ namespace.dot ๊ตฌํ˜„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ƒํ˜ธ ์šด์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ๋‹จ์ผ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ OO์ด๊ณ  ๊ทธ๊ฒŒ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์˜ˆ, ๊ทธ๊ฒƒ์€ ํŒŒ์ด์ฌ ์Šต๊ด€์˜ ํฐ ํœด์‹์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜ˆ, ๊ทธ ์œ„์— ์—ฐ์‚ฐ์ž๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๊นŒ๋‹ค๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋…ธ๋ ฅํ• ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ฌผ๊ฑด์„ ๊นจ๋Š” ๋ฐ ์ฐฌ์„ฑ ํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ;-)

@rgommers ๋‚ด๊ฐ€ ์“ด ๊ธ€์„ ๋‹ค์‹œ ์ฝ์œผ์‹ญ์‹œ์˜ค. ๋ฐ˜๋ณตํ•˜์ง€ ๋ง๊ณ  NumPy๊ฐ€ LAPACK์˜ ์†๋„๋ฅผ ์ฑ„ํƒํ•ด์•ผํ•œ๋‹ค๊ณ  ์ œ์•ˆํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ดํ•ด. ๋‚ด ๋‹ต์žฅ์˜ ๋‘ ๋‹จ๋ฝ์€ ์ง์ ‘์ ์ธ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ํ˜ผ๋ž€ ์Šค๋Ÿฌ์šฐ๋ฉด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ทธ๋ ‡๊ฒŒ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค (์ฆ‰, ๋‚ด ํ™˜๊ฒฝ์—์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์˜ 80 %)์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ถ„๋ช…ํ•˜๊ฒŒ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ผ ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ๋งํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ์ œ์•ˆ์ด ๊ฑฐ์ ˆ ๋  ๊ฒƒ์ด๋ผ๋Š” ํ•ฉ์˜๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 80 %์— ๊ณ ์ • ๋œ ๋ฒ„์ „์„ ์š”์ฒญํ•˜๊ณ  ๊ทธ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค.

@khinsen OK, ๊ทธ๋Ÿผ ๋‚ด ์˜ˆ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ํ™•์‹คํžˆ ๋งŒ๋“ค ์ˆ˜์žˆ๋Š” ์ธ๋ฑ์‹ฑ์˜ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ณ€๊ฒฝ ์ธ ์ฒ™ํ•˜์‹ญ์‹œ์˜ค. (๋ฉ‹์ง„ ์ธ๋ฑ์‹ฑ์—๋Š” ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์ฝ”๋„ˆ ์ผ€์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.)

@njsmith ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์‹ฑ์€ Python์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์ด๋ฏ€๋กœ ๋‹ค์‹œ OO์ž…๋‹ˆ๋‹ค.

๋ถ€์ˆ˜์  ์ธ๋ฑ์‹ฑ์€ NumPy์—์„œ ๊ฐ€์žฅ ํฐ ๋””์ž์ธ ์‹ค์ˆ˜์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ์€ ๋ถ„๋ช…ํ•œ ์‚ฌ์–‘์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ •์ˆ˜ ์ธ์ˆ˜์˜ ๊ฒฝ์šฐ np.take np.repeat , ๋ถ€์šธ ์ธ์ˆ˜์˜ ๊ฒฝ์šฐ

์‹ค์ œ๋กœ์ด ์Šค๋ ˆ๋“œ์˜ ์ฃผ์ œ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด๊ฒƒ์€ ๊ฐœ๋ฐœ์ด ๋„ˆ๋ฌด ๋นจ๋ฆฌ ์ง„ํ–‰๋  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋””์ž์ธ ์‹ค์ˆ˜์˜ ์ข…๋ฅ˜์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๊ณ  ์ „์ ์œผ๋กœ SciPy ์ฝ”์Šค์—์„œ ๋ฉ‹์ง„ ์ธ๋ฑ์‹ฑ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•ฉ๋‹ˆ๋‹ค. np.take ๋ฐ np.repeat ๊ฐ€ ์™„๋ฒฝํ•˜๊ฒŒ ์ž˜ ์ž‘๋™ํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฉ”์†Œ๋“œ๊ฐ€ ์•„๋‹Œ ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋ฉด OO ๋ฌธ์ œ๋„ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„์ด ๋ถ€์šธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋  ๋•Œ ์˜๋„๋ฅผ ์•”์‹œํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— np.repeat ์„ ์‹ซ์–ดํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋ณ„์นญ์„ ๋„์ž…ํ•˜์‹ญ์‹œ์˜ค : select = np.repeat . ๋‹ค์‹œ ํ•œ ๋ฒˆ OO๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜ ์ธ๋ฑ์‹ฑ์€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์˜ ์˜ํ–ฅ์„๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ๊ฑฐ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ๊ธฐ๋Œ€ํ•˜๋Š” ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ๋ฉ”์„œ๋“œ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ๊นŒ๋‹ค๋กœ์šด ๋ฌธ์ œ๋Š” ์‚ฐ์ˆ ์ž…๋‹ˆ๋‹ค. np.add(a, b) ๋Œ€์‹  ๋ฐฐ์—ด ์ถ”๊ฐ€๋ฅผ ์œ„ํ•ด a+b ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ์ง€๋งŒ, ํŠนํžˆ ๊ฒฐ๊ณผ dtype ์ธก๋ฉด์—์„œ ์ •ํ™•ํžˆ a+b ์ด ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ๋ณดํŽธ์  ์ธ ํ•ฉ์˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. . ๊ทธ๊ฒƒ์€ Numeric / numarray ๋ถ„ํ• ์˜ ํ•ต์‹ฌ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜์˜€์œผ๋ฉฐ, NumPy์— ์ƒˆ๋กœ์šด ์Šค์นผ๋ผ ์œ ํ˜•์ด ๋„์ž…๋˜์—ˆ์œผ๋ฉฐ, ์ด๋กœ ์ธํ•ด ๋ถˆ์พŒํ•œ ๋†€๋ผ์›€๋„ ์ƒ๋‹นํžˆ ๋งŽ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š”์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ฏฟ์ง€๋งŒ GitHub ๋ฌธ์ œ ๋…ผ์˜์— ๋Œ€ํ•œ ๋ถ€์ˆ˜์  ์ธ ๋ฐœ์–ธ์€ ์•„๋‹ˆ๋‹ค.

@rgommers "80 %์— ๊ณ ์ • ๋œ ๋ฒ„์ „ ์š”์ฒญ"์ด ๊ฐ€๋Šฅํ–ˆ๋‹ค๋ฉด ์˜ค๋ž˜ ์ „์— ํ•ด์™”์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. "80 %"๋Š” ๋Œ€ํ™” ํ•  ์ˆ˜์žˆ๋Š” ์กฐ์งํ™” ๋œ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฐฐ๊ฒฝ ๋ฌธํ™”๋ฅผ ๊ณต์œ ํ•˜์ง€๋งŒ ์„œ๋กœ ์ƒํ˜ธ ์ž‘์šฉํ•˜์ง€ ์•Š๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ž…๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์ œ์•ˆ์€ "Windows ์‚ฌ์šฉ์ž์—๊ฒŒ Linux๋กœ ์ „ํ™˜ํ•˜๋„๋ก ์š”์ฒญ"(๋˜๋Š” ๊ทธ ๋ฐ˜๋Œ€)๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด NumPy๊ฐ€ ์ธํ”„๋ผ ์†Œํ”„ํŠธ์›จ์–ด๋ผ๊ณ  ์ฃผ์žฅํ•จ์œผ๋กœ์จ ์ œ๊ฐ€ํ•˜๋ ค๋Š” ์š”์ ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์†Œํ”„ํŠธ์›จ์–ด ์„ค์น˜๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ์ˆ˜๋ฐฑ ๊ฐœ์˜ ๋ ˆ๊ณ  ๋ธŒ๋ฆญ ์ค‘ ํ•˜๋‚˜ ์ผ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ํŠน๋ณ„ํžˆ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  ๋‹จ์ง€ ๊ฑฐ๊ธฐ์— ์žˆ๊ณ  "์ผ"ํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋„ˆ๋ฌด ๋งŽ์ด ํƒˆ์„ ์‹œํ‚ค๊ณ  ์‹ถ์ง€ ์•Š์ง€๋งŒ np.repeat ๋ฐ bool ๋ฐฐ์—ด๋กœ ๋ฌด์—‡์„ ์–ธ๊ธ‰ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ „ํ˜€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

@ eric-wieser๋Š” 0 ๋ฒˆ ๋ฐ˜๋ณตํ•˜๊ณ  ๋ฐฐ์—ด์—์„œ ์ œ๊ฑฐํ•˜๋ฉด 1 ๋ฒˆ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ธ๋ฑ์‹ฑ ๋Œ€์‹  ์ด๊ฒƒ์„ ๊ฐ€๋ฅด์น˜๋Š” ๊ฒƒ์— ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ๋‚˜์—ดํ•˜์ง€๋งŒ ...).

์ด๊ฒƒ์€ ๋” ์ด์ƒ ์•„๋ฌด๋ฐ๋„ ๊ฐ€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ด๋“œ ํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค :). ๋‚˜๋Š” ์‹ค์ œ๋กœ numpy์—์„œ ์ฒœ์ฒœํžˆ ๊ณ ์น˜๋Š” ๊ฒƒ์ด ๋ฏธ๋ž˜์˜ ์–ด๋Š ์‹œ์ ์—์„œ numpy๋ฅผ ๋” ์‰ฝ๊ฒŒ ๊ต์ฒด ํ•  ์ˆ˜ ์žˆ๋„๋ก ์•ฝ๊ฐ„ ํฌ๋งํ•ฉ๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์ œ์•ˆ์€ "Windows ์‚ฌ์šฉ์ž์—๊ฒŒ Linux๋กœ ์ „ํ™˜ํ•˜๋„๋ก ์š”์ฒญ"(๋˜๋Š” ๊ทธ ๋ฐ˜๋Œ€)๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

ํ , ๊ธฐ์ˆ ์ ์œผ๋กœ ์œ ๋Šฅํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์‹ค์ œ ์„ธ๊ณ„์˜ ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ์•„ ๋ณด๋„๋ก ์š”์ฒญํ•˜๋Š”

์ด๊ฒƒ์ด NumPy๊ฐ€ ์ธํ”„๋ผ ์†Œํ”„ํŠธ์›จ์–ด๋ผ๊ณ  ์ฃผ์žฅํ•จ์œผ๋กœ์จ ์ œ๊ฐ€ํ•˜๋ ค๋Š” ์š”์ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ์šฐ๋ฆฌ๊ฐ€์ด ์ „ํ™˜์„ํ•œ๋‹ค๋ฉด SciPy๊ฐ€ ๋‹ค์Œ ์ธํ”„๋ผ์ด๊ธฐ ๋•Œ๋ฌธ์— SciPy๋กœ ๋„˜์–ด๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๊นŒ? ์–ธ์ œ ์ธํ”„๋ผ๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  NumPy์™€ ๋‹ค๋ฅธ ์ธํ”„๋ผ๊ฐ€ Python ์ž์ฒด ๋ฐ ๋‚˜๋จธ์ง€ ์ „์ฒด ๊ณผํ•™ Python ์ƒํƒœ๊ณ„์™€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ฒด๊ณ„๋ฅผ ์›ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

80 % "๋Š” ๋Œ€ํ™” ํ•  ์ˆ˜์žˆ๋Š” ์กฐ์งํ™” ๋œ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ์‚ฌ์šฉํ•˜๋Š” ์Šˆํผ ์ปดํ“จํ„ฐ์˜ ๊ด€๋ฆฌ์ž๋Š” ์ •๋ง๋กœ ์„œ๋กœ ๋Œ€ํ™”ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ์ด ๋‘ ์‹œ์Šคํ…œ์—์„œ ๋ชจ๋“  ์—…๋ฐ์ดํŠธ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋Œ์•„ ๋‹ค๋‹ˆ๋ฉฐ ์ด์•ผ๊ธฐํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ „ ์„ธ๊ณ„ ๋ชจ๋“  ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž์˜ 80 %๋ฅผ ๊ต์œกํ•ด์•ผํ•œ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹ˆ๋ผ ํ•„์š”ํ•œ ์‚ฌ๋žŒ ๋งŒ ๊ต์œกํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

@seberg ๋ชฉ๋ก๊ณผ ๋ฐฐ์—ด์ด ์ธ๋ฑ์‹ฑ์„ ๊ณตํ†ต ์†์„ฑ์œผ๋กœ ๋งŒ ๊ณต์œ ํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์œ ํ˜•

๋ฟก ๋นต๋€จ

๋‹น์‹ ์ด ์‚ฌ์šฉํ•˜๋Š” ์Šˆํผ ์ปดํ“จํ„ฐ์˜ ๊ด€๋ฆฌ์ž๋Š” ์ •๋ง๋กœ ์„œ๋กœ ๋Œ€ํ™”ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”. ๊ทธ๋“ค์€ ์„œ๋กœ์˜ ์กด์žฌ์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์„œ๋กœ ๋‹ค๋ฅธ ์žฅ์†Œ์—์žˆ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์กฐ์ง์„ ์œ„ํ•ด ์ผํ•˜๋ฉฐ, ์œ ์ผํ•œ ๊ณตํ†ต์ ์€ ๋ช‡ ๋ช…์˜ ์‚ฌ์šฉ์ž๋ฅผ ๊ณตํ†ต์œผ๋กœ ๊ฐ–๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ „ ์„ธ๊ณ„ ๋ชจ๋“  ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž์˜ 80 %๋ฅผ ๊ต์œกํ•ด์•ผํ•œ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹ˆ๋ผ ํ•„์š”ํ•œ ์‚ฌ๋žŒ ๋งŒ ๊ต์œกํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚˜์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ œ ์ž์‹ ์—๊ฒŒ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ํ•ญ์ƒ Python๊ณผ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๊ด€ํ•œ ๊ฒƒ์€ ์ œ๊ฐ€ ํ˜‘๋ ฅํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๊ณผ ์ €์—๊ฒŒ ๋„์›€์„ ์š”์ฒญํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ž…๋‹ˆ๋‹ค (์˜ˆ : ๊ทธ๋“ค์ด ๊ณผ๊ฑฐ์— ์ œ Python ๊ณผ์ • ์ค‘ ํ•˜๋‚˜์— ์ฐธ์—ฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—). ๊ทธ๋“ค์€ ์ž์‹ ์˜ Python ์„ค์น˜๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ (๊ด€๋ฆฌ์ž ๋˜๋Š” ๊ฒฝํ—˜์ด ๋” ๋งŽ์€ ๋™๋ฃŒ)์—๊ฒŒ ๋งก๊ธธ ์ˆ˜์žˆ๋Š” ๊ธฐ์ˆ ์  ๋Šฅ๋ ฅ์ด ์—†์Šต๋‹ˆ๋‹ค.

์‹ค์ œ ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด

๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๊ณต์œ  ๋œ ๋ฐฐ๊ฒฝ ๋ฌธํ™”์—์„œ ํ˜„์‹ค ์„ธ๊ณ„๋Š” ์‹ค์ œ๋กœ ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ ๋˜๋Š” ๊ทผ์‚ฌ์น˜์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๊ณต์œ  ๋œ ๋ฐฐ๊ฒฝ ๋ฌธํ™”์—์„œ ํ˜„์‹ค ์„ธ๊ณ„๋Š” ์‹ค์ œ๋กœ ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ ๋˜๋Š” ๊ทผ์‚ฌ์น˜์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ์ด์œ ๋Š” LAPACK & co์™€ ๊ฐ™์ด ๋Œ€๋ถ€๋ถ„ ๋Š๋ฆฌ๊ฒŒ ์›€์ง์ด๋Š” ์ œํ•œ๋œ ์ˆ˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. @njsmith๊ฐ€ ์ง€์ ํ–ˆ๋“ฏ์ด ๋Œ€๋ถ€๋ถ„์˜ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ๋‚ฎ์Šต๋‹ˆ๋‹ค.

@rgommers ๋‚ด๊ฐ€ "์ž‘์€ ์ˆซ์ž"๋ผ๊ณ  ๋งํ•˜์ง€๋Š”

@njsmith๊ฐ€ ์ง€์ ํ–ˆ๋“ฏ์ด ๋Œ€๋ถ€๋ถ„์˜ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ๋‚ฎ์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝํ—˜์œผ๋กœ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ "๋‹ค์ˆ˜"๋Š” ์•„๋งˆ๋„ ๋‹น์‹ ๊ณผ ์ € ๋ชจ๋‘์—๊ฒŒ "๋‚ด๊ฐ€ ์•„๋Š” ๋Œ€๋ถ€๋ถ„"์„ ์˜๋ฏธ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  SciPy ์ƒํƒœ๊ณ„ ๋ฐ–์—์„œ ๋‹น์‹ ์ด ์‚ฌ์šฉํ•˜๋Š” ํŒจํ‚ค์ง€์™€ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ‚ค์ง€ ์‚ฌ์ด์— ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์ด ๊ฑฐ์˜ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ์šฐ๋ฆฌ๊ฐ€์ด ์ „ํ™˜์„ํ•œ๋‹ค๋ฉด SciPy๊ฐ€ ๋‹ค์Œ ์ธํ”„๋ผ์ด๊ธฐ ๋•Œ๋ฌธ์— SciPy๋กœ ๋„˜์–ด๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๊นŒ? ์–ธ์ œ ์ธํ”„๋ผ๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๊นŒ?

์ €๋Š” ์‹ค์ œ๋กœ SciPy์™€ SciPy ์ƒํƒœ๊ณ„์˜ ๋‚˜๋จธ์ง€ ๋ชจ๋“  ๊ธฐ๋ณธ ์‚ฌํ•ญ์ด ๋™์ผํ•œ ์›์น™์„ ์ฑ„ํƒํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜์ง€๋งŒ ๊ฐœ์ธ์ ์œผ๋กœ๋Š” NumPy๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ›จ์”ฌ ๋” ๊ทผ๋ณธ์ ์ž…๋‹ˆ๋‹ค. NumPy ๋ฐฐ์—ด์€ ๋งŽ์€ ๊ณผํ•™ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ค‘์‹ฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ธ ๋ฐ˜๋ฉด SciPy๋Š” ์ฃผ์–ด์ง„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ž‘์€ ํ•˜์œ„ ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฑฐ๋Œ€ํ•œ ํ•จ์ˆ˜ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ SciPy๋Š” ์‚ฌ์‹ค์ƒ 1.0์— ์ด๋ฅด๋ € ๊ธฐ ๋•Œ๋ฌธ์— ์˜๋„์ ์œผ๋กœ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  NumPy์™€ ๋‹ค๋ฅธ ์ธํ”„๋ผ๊ฐ€ Python ์ž์ฒด ๋ฐ ๋‚˜๋จธ์ง€ ์ „์ฒด ๊ณผํ•™ Python ์ƒํƒœ๊ณ„์™€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ฒด๊ณ„๋ฅผ ์›ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ „์ฒด SciPy ์ƒํƒœ๊ณ„๋Š” ์‹ค์ œ๋กœ ๊ณผํ•™ ์ปดํ“จํŒ…์—์„œ ์ง€๋ฐฐ์  ์ธ ์ ‘๊ทผ ๋ฐฉ์‹ ์ธ ๋™์ผํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์Šต๊ด€์ด ๋‹ค๋ฅธ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์˜ Python ๋ฐ Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์›น ๊ฐœ๋ฐœ์€ ๊ณผํ•™ ์ปดํ“จํŒ…๋ณด๋‹ค ํ›จ์”ฌ ๋œ ๋ณด์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋Œ€๋ถ€๋ถ„ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋ฅผ ๋Œ๋ณด๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ ์–ธ์–ด๋Š” ์œ ์ผํ•œ ์—ฐ๋ฝ ์ง€์ ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

NumPy ๋ฐฐ์—ด์€ ๋งŽ์€ ๊ณผํ•™ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ค‘์‹ฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ธ ๋ฐ˜๋ฉด SciPy๋Š” ์ฃผ์–ด์ง„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ž‘์€ ํ•˜์œ„ ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฑฐ๋Œ€ํ•œ ํ•จ์ˆ˜ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ค‘์•™ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค. ํŠน์ • ๋ฆด๋ฆฌ์Šค์—์„œ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ฝ”๋„ˆ ์ผ€์ด์Šค์ด๋ฉฐ ๋Œ€๋ถ€๋ถ„ ndarray ๋™์ž‘์ด ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด https://github.com/numpy/numpy/blob/master/doc/release/1.13.0-notes.rst#compatibility -notes๋ฅผ ์ฐธ์กฐ

๋˜ํ•œ SciPy๋Š” ์‚ฌ์‹ค์ƒ 1.0์— ์ด๋ฅด๋ € ๊ธฐ ๋•Œ๋ฌธ์— ์˜๋„์ ์œผ๋กœ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

SciPy๋Š” NumPy์™€ ๋˜‘๊ฐ™์€ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ฒด๊ณ„์™€ ์ง€์› ์ค‘๋‹จ / ์ œ๊ฑฐ ์ •์ฑ…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋žซ๋™์•ˆ 0.x์— ์žˆ๋‹ค๊ณ ํ•ด์„œ semver๋ฅผ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

(๋‚ด๊ฐ€๋ณด๊ธฐ์—) ๊ณผํ•™ ์ปดํ“จํŒ…์—์„œ ์ง€๋ฐฐ์  ์ธ ๊ฒƒ

SciPy ์ƒํƒœ๊ณ„์˜ ์ „ํ†ต์ ์ธ ๋น„๊ต๋Š” Matlab ๋ฐ R๊ณผ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. R์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์ง€๋งŒ 3.x์— ์žˆ๊ณ  ๋งŽ์ด ์ง„ํ™” ํ–ˆ์œผ๋ฏ€๋กœ ์•„๋งˆ๋„ semver๊ฐ€ ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Matlab : ํ™•์‹คํžˆ semver๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

RE : ๋ฉ‹์ง„ ์ธ๋ฑ์‹ฑ. ์‹ค์ œ๋กœ ์ด๊ฒƒ์€ ์ „์šฉ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด tf.gather , tf.gather_nd , tf.scatter_nd , tf.boolean_mask ๋“ฑ๊ณผ ๊ฐ™์ด TensorFlow์—์„œ ์ˆ˜ํ–‰ ํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” [] ์˜ค๋ฒ„๋กœ๋“œํ•˜์ง€๋งŒ ํ™•์‹คํžˆ ๋” ํˆฌ๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋„์›€์ด ๋  ์ˆ˜์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์€ Python 2์—์„œ 3์œผ๋กœ์˜ ์ „ํ™˜์˜ ์–ด๋ ค์›€ ๋•Œ๋ฌธ์— ๋ถ€๋ถ„์ ์œผ๋กœ ๋™๊ธฐ๋ฅผ ๋ถ€์—ฌํ•œ ๊ธฐ๋Šฅ์ธ ์œ ํ˜• ์ฃผ์„์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์‰ฌ์šธ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์— ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฒฐ๊ณผ๋Š” ๋” ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋งŽ์€ ์—๋„ˆ์ง€๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ SciPy์™€ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ๋กœ ๋‹ค์šด ์ŠคํŠธ๋ฆผ์„ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.

@khinsen ๋‚˜๋Š” ์ผ์ฃผ์ผ ๋‚ด๋‚ด ํ† ๋ก ์„ ๋”ฐ๋ผ

ํ˜„์žฌ Apple Accelerate ํ”„๋ ˆ์ž„ ์›Œํฌ ๋•๋ถ„์— ํ•„์š”ํ•œ ์ตœ์†Œ LAPACK ๋ฒ„์ „์€ 10 ๋…„ ์ด์ƒ ์ „์˜ 3.1.ish์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ LAPACK์€ 3.8.0์ž…๋‹ˆ๋‹ค. ๊ทธ ๋™์•ˆ ๊ทธ๋“ค์€ ๊ฝค ๋งŽ์€ ๋ฃจํ‹ด (๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ œ๊ฑฐ๋จ)์„ ๋ฒ„๋ฆฌ๊ณ  ๋งŽ์€ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ–ˆ์œผ๋ฉฐ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ƒ์šฉ ์†Œํ”„ํŠธ์›จ์–ด์™€ Python ๊ณผํ•™ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐ„์˜ ๊ฒฉ์ฐจ๋ฅผ ๋ฉ”์šฐ๋Š” ๋ฐ ํ•„์š”ํ•œ ์ƒˆ๋กœ์šด ๋ฃจํ‹ด์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ์—ฌ๊ธฐ ์— ์š”์•ฝ๋˜์–ด @rgommers ์™€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์ฃผ๋กœ ์„ฑ๊ฐ€ ์‹œ๊ฒŒ

์ด์ œ ์ตœ์‹  ๋ฒ„์ „์— ๋Œ€ํ•œ ํ™•์‹คํ•œ ์š”๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋…ผ์˜๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์šฐ๋ฆฌ๋Š” ๊ทธ ๋ถ€๋ถ„์„ ์•ˆ์ „ํ•˜๊ฒŒ ๊ฑด๋„ˆ ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. NumPy ๋ฐ SciPy์˜ ์‚ฌ์šฉ์ž ์ค‘ ์ƒ๋‹น ๋ถ€๋ถ„์ด ์ด๋กœ ์ธํ•ด ํ˜œํƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์ด ์ด๋ฏธ ์ œ์‹œ ํ•œ ๋…ผ์Ÿ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํžˆ ๊ทธ๊ฒƒ์„ ๋ฒ„๋ฆด ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋น„์—ดํ•œ ๋ฐฉ์‹์œผ๋กœ ์ด๊ฒƒ์„ ๋ฌป๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜‘๊ฐ™์ด ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— (๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๊ทธ๋“ค๊ณผ ๋™์˜ํ•œ๋‹ค๊ณ  ๋งํ•ด์•ผ ํ•จ) ์•„๋งˆ๋„ ๋‹น์‹ ์˜ ์™ธ๋ชจ๊ฐ€ ์‹ ์„ ํ•œ ์•„์ด๋””์–ด๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Accelerate๋ฅผ ์œ ์ง€ํ•˜๊ณ  ๊ทธ๋Ÿฌํ•œ ์ผ์ด ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด NumPy / SciPy ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•ฉ๋‹ˆ๊นŒ? ํ˜์‹ ์„ ์œ„ํ•ด ์ง€์›์„ ์ค‘๋‹จํ•œ๋‹ค๋ฉด ์—ฌ๊ธฐ์—๊ฐ€๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํ˜„์žฌ Apple Accelerate ํ”„๋ ˆ์ž„ ์›Œํฌ ๋•๋ถ„์— ํ•„์š”ํ•œ ์ตœ์†Œ LAPACK ๋ฒ„์ „์€ 3.1.ish์ž…๋‹ˆ๋‹ค.

@mhvk , ์ด๊ฒƒ์€ 1,14์˜ # 9976์—์„œ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 3.2.2๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@xoviat : ๊ทธ ๋ฌธ์ œ์— ๋Œ€ํ•ด์ด ํ† ๋ก ์„ํ•ฉ์‹œ๋‹ค

@ilayn ๊ตฌ์ฒด์ ์ด๊ณ  ๊ฑด์„ค์ ์ธ ๋ฐ€์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์‚ฌ์‹ค ๊ทธ ์ƒํ™ฉ๊ณผ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๋„๋ก ๋™๊ธฐ๋ฅผ ๋ถ€์—ฌํ•œ ์ƒํ™ฉ ์‚ฌ์ด์—๋Š” ๋งŽ์€ ์œ ์‚ฌ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๊ณตํ†ต์  : ์„œ๋กœ ๋‹ค๋ฅธ ์š”๊ตฌ๋ฅผ ๊ฐ€์ง„ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž / ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€๋Š” Accelerate๋ฅผ ์›ํ•˜๊ณ  ๋‹ค๋ฅธ ์ผ๋ถ€๋Š” ์ƒˆ๋กœ์šด LAPACK ๊ธฐ๋Šฅ์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ํŠน์ • ์šฐ์„  ์ˆœ์œ„์— ๋Œ€ํ•œ ์ข‹์€ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Accelerate ์™€ ์ƒˆ๋กœ์šด LAPACK ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์›ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด์žˆ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ด๊ฒƒ์€ ๋ถ„๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Fortran / C ์„ธ๊ณ„์—์„œ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์Šคํƒ์ด ๋” ์–•๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์ค‘๊ฐ„์ฒด์—†์ด Fortran, LAPACK ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋Š” ์šฐ์„  ์ˆœ์œ„์— ๋”ฐ๋ผ ํŠน์ • ๋ฒ„์ „์˜ LAPACK์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ปดํ“จํŒ… ์„ผํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฌ๋Ÿฌ LAPACK ๋ฒ„์ „์„ ๋ณ‘๋ ฌ๋กœ ์œ ์ง€ํ•˜๋ฉฐ, ๊ฐ๊ฐ ์ž์ฒด ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์œผ๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์˜ Makefile ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

SciPy ์—์ฝ” ์‹œ์Šคํ…œ์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์ด์–ด ๋ฐ›์•„์•ผ ํ•  ๊ตํ›ˆ์€ ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณ„ ์†Œํ”„ํŠธ์›จ์–ด ๋ฒˆ๋“ค์„ ์กฐ๋ฆฝํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์ž‘์—…์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์„ธ์ƒ์—์„œ ๊ทธ๊ฒƒ์€ Anaconda, Debian ๋ฐ ๊ธฐํƒ€ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฐํฌํŒ์—์„œ ์ผํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์˜ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž์™€ ์˜ฌ๋ฐ”๋ฅธ ๋Šฅ๋ ฅ๊ณผ ๋™๊ธฐ๋ฅผ ๊ฐ€์ง„ ์ตœ์ข… ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ SciPy / LAPACK ๋”œ๋ ˆ๋งˆ์— ๋Œ€ํ•œ ์ €์˜ ์ œ์•ˆ์€ Accelerate๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋Š˜๋‚ ์˜ SciPy๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์ตœ์†Œํ•œ์˜ ์œ ์ง€ ๊ด€๋ฆฌ ๋ชจ๋“œ (๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ธ์ˆ˜ ํ•  ์ˆ˜ ์žˆ์Œ)๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Accelerate๋ฅผ ์›ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ "SciPy 2017"์„ ์„ ํƒํ•˜๊ณ  ํ–‰๋ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ƒˆ๋กœ์šด LAPACK ๊ธฐ๋Šฅ์„ ์–ป์ง€ ๋ชปํ•  ๊ฒƒ์ด์ง€๋งŒ ์•„๋งˆ๋„ ๋Œ€๋ถ€๋ถ„์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค ( scipy2 , scipy2018 ๋˜๋Š” ๊ธฐํƒ€)์—์„œ ๊ฐœ๋ฐœ์ด ๊ณ„์†๋˜๋ฉฐ ์ตœ์‹  LAPACK์œผ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์ ์œผ๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด์ด ๋‘ ๊ฐ€์ง€ (๊ทธ๋ฆฌ๊ณ  ๋ฏธ๋ž˜์˜) ๋ณ€ํ˜•์˜ ๋ณ‘๋ ฌ ์„ค์น˜๋ฅผ ํ—ˆ์šฉํ•˜์‹ญ์‹œ์˜ค (SciPy์—์„œ ๊ฐ€๋Šฅํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค). ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‘˜ ๋‹ค ํ•„์š”๋กœํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ์—ฌ๋Ÿฌ ํ™˜๊ฒฝ (Conda, Venv ๋˜๋Š” Nix ๋˜๋Š” Guix๋ฅผ ํ†ตํ•œ ์‹œ์Šคํ…œ ์ „์ฒด ํ™˜๊ฒฝ)์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‘ ๋ฒˆ์งธ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋„ ๋ชจ๋“  ์ˆ˜์ค€์˜ Python ์ฝ”๋“œ ๋…์ž๊ฐ€ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋œ SciPy ๋ฒ„์ „์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๊ฐ ๋ณ€๊ฒฝ์œผ๋กœ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ „์ฒด์ ์ธ ์•„์ด๋””์–ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์ œ์•ˆํ•˜๊ณ  ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ ์˜๋ฏธ์—์„œ "๋” ๋‚˜์€"๊ฒƒ์œผ๋กœ ๊ด‘๊ณ ํ•˜๊ฑฐ๋‚˜ ๋ณดํŽธ์  ์ธ ๋Œ€์ฒด๋ฌผ๋กœ ๊ด‘๊ณ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠน์ • ์ž‘์—…์— ์ ํ•ฉํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ์กฐํ•ฉ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋“ค์˜ ์ผ์ด ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ผ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ๊ณผ ์กฐ๋ฆฝ์ด ์„œ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์— ์˜ํ•ด ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค๋Š” ์ผ๋ฐ˜์ ์ธ ์ƒ๊ฐ์€ ์˜ค๋Š˜๋‚ ์˜ ๋ฉ”๊ฐ€ ํŒจํ‚ค์ง€๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ์†๋„๋กœ ์ง„ํ–‰ํ•  ์ˆ˜์žˆ๋Š” ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•ด์•ผ ํ•จ์„ ์‹œ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ์ž‘์€ LAPACK ์ธํ„ฐํŽ˜์ด์Šค์™€ f2py ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ํฌํ•จํ•˜๋Š” NumPy์— ๋Œ€ํ•œ ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. SciPy์˜ ๊ฒฝ์šฐ ์ผ๊ด€์„ฑ๊ณผ ๊ณตํ†ต ๊ฐœ๋ฐœ ์ •์ฑ…์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ณตํ†ต ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์  ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ํ•˜์œ„ ํŒจํ‚ค์ง€๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”๊ฐ€ ํŒจํ‚ค์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์€ 20 ๋…„ ์ „์— ํ›Œ๋ฅญํ–ˆ๋˜ Python์˜ "๋ฐฐํ„ฐ๋ฆฌ ํฌํ•จ"๋ชจํ† ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚ ์˜ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜์€ ๋„ˆ๋ฌด ๋‹ค์–‘ํ•˜๋ฉฐ ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง•์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณ„๊ฐœ์˜ ํ™œ๋™์œผ๋กœ ์ธ์‹๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํ„ฐ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์€ ์ด์ œ Anaconda๊ฐ€ ํ•  ์ผ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜๋Š” ๋ฐ์žˆ์–ด ๊ฐ€์žฅ ํฐ ์žฅ์• ๋ฌผ์€ "๊ธฐ๊ณ„ ๋‹น ํ•˜๋‚˜์˜ Python ์„ค์น˜"์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” Debian ๋˜๋Š” Fedora์™€ ๊ฐ™์€ ์ „ํ†ต์ ์ธ Linux ๋ฐฐํฌํŒ์ž…๋‹ˆ๋‹ค. ํ•ฉ๋ฆฌ์ ์ธ ๋…ธ๋ ฅ์œผ๋กœ ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ ์ „์ฒด์˜ ๊ฐ€์ƒ ํ™˜๊ฒฝ์œผ๋กœ ์ „ํ™˜ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ด์— ๋Œ€ํ•ด ๋งŽ์ด ์ƒ๊ฐํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ €์—๊ฒŒ ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง•์˜ ๋ฏธ๋ž˜๋Š” conda ๋‚˜ Guix์™€ ๊ฐ™์€ ํ™˜๊ฒฝ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ๋‹น์‹ ์ด ์ œ์‹œ ํ•œ ๋ชจ๋“  ์ „์น˜์‚ฌ๊ฐ€์ด ๋‹จ๊ณ„๋“ค๊ณผ ์–ด๋–ป๊ฒŒ ํ˜ธํ™˜๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๋‹ค์Œ ์‚ฌ์ง„์˜ ๊ด‘๊ธฐ๋ฅผ ์žฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    image
    ๋ฐฉ๊ธˆ ๊ณ„์‚ฐํ–ˆ๊ณ  ์ด์ œ Windows ์ปดํ“จํ„ฐ์— 27 ๊ฐœ์˜ ๋ณต์‚ฌ๋ณธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์—ฌ๊ธฐ์— ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋” ์ž์ฃผ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 10์„ ๊ณฑํ•˜๊ณ  NumPy ๋ฐ SciPy ๋ฆด๋ฆฌ์Šค์ฃผ๊ธฐ๊ฐ€ ๋…๋ฆฝ์ ์ด๋ฏ€๋กœ 2๋ฅผ ๊ณฑํ•ฉ๋‹ˆ๋‹ค. 2025 ๋…„์—๋Š” ๊ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์‚ฌ๋ณธ 15 ๊ฐœ์™€ LAPACK 10 ๊ฐœ, f2py 5 ๊ฐœ๋ฅผ ์ข…์†์„ฑ์œผ๋กœ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ํŒจํ‚ค์ง€ ๋ชจ๋‘์—์„œ ์ˆ˜์‹ญ ๋ช…์˜ ์‚ฌ๋žŒ๋“ค์— ๋Œ€ํ•œ ์œ ์ง€ ๊ด€๋ฆฌ ๋ถ€๋‹ด์€ ๋งํ•  ๊ฒƒ๋„์—†๊ณ , ์ด๊ฒƒ์€ ๋‹จ์ˆœํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. (C ++๋Š” ๊ด€๋ จ์ด ์—†์œผ๋ฉฐ ๋ชจ๋“  ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฝ์ž…ํ•˜์‹ญ์‹œ์˜ค). Win์— ๋Œ€ํ•œ ์ƒ์—…์šฉ ์ฝ”๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ฌผ์–ด๋ณด๊ณ  ์ด๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ด๋ผ๊ณ  ๋งํ•˜์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ๊ทธ ๊ตํ™˜์—์„œ ๋’ค ๋”ฐ๋ฅด๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ฑ…์ž„์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ํŒจํ‚ค์ง€์˜ ์„ธ๋ถ„์„ฑ์„ ๋†’์ด๊ณ  ์ด์ œ๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๋ฒ„์ „์œผ๋กœ ์ž์ฒด์ ์œผ๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. f2py๋Š” ํ•œ ๋ฒ„์ „์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ง์ณค์œผ๋ฏ€๋กœ SciPy๋Š” ๋‹ค์Œ ๋ฒ„์ „์—์„œ ๋นŒ๋“œ๋ฅผ ์ค‘์ง€ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์ด์ „ ๋ฒ„์ „์˜ NumPy์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ผ๋ถ€ ์ „์ฒด ๋ก ์  ์‹ค์ฒด๋Š” ๊ทธ๊ฒƒ๋“ค์„ ๋ฌด๋ฃŒ๋กœ ๋ชจ์•„์•ผํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋˜ํ•œ Anaconda (๋˜๋Š” ๋‹ค๋ฅธ ์—”ํ‹ฐํ‹ฐ)๋ฅผ Accelerate์™€ ๊ฐ™์€ ์ฃผ์š” ์˜์กด ํšŒ์‚ฌ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ๋‹จ์ˆœํžˆ "๋‹ค๋ฅธ ์‚ฌ๋žŒ"์ด ํ’๋ถ€ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜์„ ๊ฐ€์ƒ ํ™˜๊ฒฝ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์‹ค์ œ๋กœ ์›ํ•˜์ง€ ์•Š๋Š” (์ž์‹  ํฌํ•จ) ์›Œํฌ ํ”Œ๋กœ๋กœ ๋™์›ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ†ต๊ณผํ•˜๋Š” ๋™์•ˆ Linux ์šด์˜ ์ฒด์ œ๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๋‹น์‹ ์€ ์•ฝ๊ฐ„ ๋น—๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค.

(์ด๊ฒƒ์€ ์ž์œ  ํ† ๋ก ์ด๋˜์—ˆ์œผ๋ฏ€๋กœ ๊ณ„์†ํ•ด์„œ ๋›ฐ์–ด ๋“ค๊ฒ ์Šต๋‹ˆ๋‹ค).

๊ฐ€์† ์ง€์›์„ ์œ ์ง€ํ•˜๋Š” ๋ฌธ์ œ๋Š” ์ตœ์‹  LAPACK API๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋ฌธ์ œ๋ผ๋ฉด, ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด LAPACK ์‹ฌ์„ ๋ฐฐ์†กํ•˜๊ณ  ์™„๋ฃŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ํŠน์ • ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ธฐ๋ณธ ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์ž์‹ ์˜ BLAS ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ ์™ธ์— ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒํ•œ๋‹ค๋ฉด OpenBLAS ๋˜๋Š” MKL์ด ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@xoviat ์ด๊ฒƒ๋“ค์€ ๋ชจ๋‘ https://github.com/scipy/scipy/pull/6051 ์—์„œ ๋…ผ์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค

@ilayn ์˜ˆ, ์ œ๊ฐ€ ๋งŒ๋“ค๊ณ ์žˆ๋Š” ์š”์ ์— ๋Œ€ํ•ด ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฝ”๋ฉ˜ํŠธ๋Š” @khinsen์„์œ„ํ•œ ๊ฒƒ์ด์—ˆ๋‹ค. ์ €๋Š” ๊ทธ๊ฐ€ Accelerate ์ง€์›์„ ์‹ค์ œ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ธ์ƒ์„ ๋ฐ›๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Python ์ƒํƒœ๊ณ„์˜ ๊ธฐ๋Šฅ (๋˜๋Š” ์ œํ•œ)์€ ์ด๋ฆ„ ๋ณ€๊ฒฝ์˜ ๋”์ฐํ•œ ํ•ดํ‚น์—†์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•œ ๋ฒ„์ „์„ ์–ป๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ•ต์‹ฌ Python์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด _lib_ ๋ฐ _lib_ 2 ๋ผ๋Š” ์ด๋ฆ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋™์ผํ•œ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ API ์ฐจ์ด๊ฐ€์žˆ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ๊ด‘์„ ํŒŒ์ด์ฌ์กฐ์ฐจ๋„ ์ด๋Ÿฐ ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ทธ๊ฒƒ์„ ์ฐข์–ด์„œ PyPi์— ์˜ฌ๋ฆฌ์ง€ ์•Š๊ณ  ํ˜„๋Œ€ ํŒŒ์ด์ฌ์—์„œ ๊ธฐ์ˆ ์ ์œผ๋กœ ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ ํ•˜๋”๋ผ๋„ ์—ฌ๋Ÿฌ ๋ฒ„์ „์—์„œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ˜ผํ•ฉํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋งŽ์€ StackOverflow ์งˆ๋ฌธ ์ด ์žˆ์œผ๋ฉฐ ๋ชจ๋‘ ๋™์ผํ•œ ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฝ๋‹ˆ๋‹ค.

@ilayn ์–ด๋–ค ์ด์œ ๋กœ ๋‹น์‹ ์˜ ์ปดํ“จํ„ฐ์—์žˆ๋Š” ๋ชจ๋“  ๋ฒ„์ „์˜ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์„ ์›ํ•œ๋‹ค๋ฉด, ์˜ˆ, ๊ทธ๊ฒƒ์€ ์—‰๋ง์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์™œ ๊ทธ๊ฑธ ์› ํ•˜๊ฒ ์–ด์š”? ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ์กฐํ•ฉ์œผ๋กœ ์ž์‹ ์„ ์ œํ•œํ•˜๋ฉด ๋” ์ ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‚ด ์ปดํ“จํ„ฐ์— ์ •ํ™•ํžˆ ๋‘ ๊ฐœ์˜ Python ํ™˜๊ฒฝ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” 20 ๋…„ ๋œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ์œ„ํ•œ Python 2 + NumPy 1.8.2๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์ž‘์—…์— ๋Œ€ํ•ด ์•ฝ 2 ๋…„ ์ „์˜ ์ตœ์ฒจ๋‹จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค ( 2 ๋…„ ์ „์— ์„ค์ •ํ–ˆ๋Š”๋ฐ ๊ทธ ์ดํ›„๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ์ด์œ ๊ฐ€ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.)

์„ธ๋ถ„ํ™”์— ๊ด€ํ•ด์„œ๋Š” ์•„๋งˆ๋„ ๋‚ด ์ œ์•ˆ์ด ๋ช…ํ™•ํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์˜นํ˜ธํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ฐœ ๋‹จ๊ณ„๊ฐ€ ์•„๋‹ˆ๋ผ ํฌ์žฅ์—์„œ ๋” ์„ธ๋ถ„ํ™”๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด f2py์™€ SciPy์˜ ๊ฐœ๋ฐœ์ด ๊ธด๋ฐ€ํ•œ ํ˜‘๋ ฅ์„ ๊ณ„์†ํ•  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. f2py-2018๊ณผ SciPy-2018์€ ํ•จ๊ป˜ ์ž‘๋™ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ ํ•ด์„œ ๋‹จ์ผ ๊ฐœ์ฒด๋กœ ํฌ์žฅ๋˜์–ด์•ผํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๋ชฉํ‘œ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฐํฌ ๊ด€๋ฆฌ์ž๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜์žˆ๋Š” ๋” ๋งŽ์€ ์ž์œ ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” Anaconda ๋˜๋Š” ๋‹ค๋ฅธ ๋ฐฐํฌํŒ์„ ์ข…์†์„ฑ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์„ ์กฐ๋ฆฝํ•˜๋Š” ๊ฒƒ์ด ๋งŽ์€ ์ž‘์—…์ด๋ผ๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ, ๋ถ„๋ฐฐ์˜ ์ˆ˜๊ฐ€ "ํ’๋ถ€ํ•˜๊ฒŒ"์ฆ๊ฐ€ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, "๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’๋ถ€ํ•จ"๊ณผ ๋” ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

"์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜"์ด ์–ด๋–ค ์›Œํฌ ํ”Œ๋กœ๋ฅผ ์›ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋‹ค๋ฅธ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ์ €๋Š” ์—ฌ๋Ÿฌ ํ™˜๊ฒฝ์œผ๋กœ ๊ฐ€๊ณ  ์‹ถ์ง€๋งŒ ๋จธ์‹  ๋‹น ๋‹จ์ผ ํ™˜๊ฒฝ์„ ์›ํ•˜๋Š” ์ƒ๋‹นํ•œ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜์ด ์žˆ๋‹ค๋ฉด ์ผ๋ถ€ ๋ฐฐํฌํŒ์ด์ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€์ƒ ํ™˜๊ฒฝ์€ ์ด์œ  ๋•Œ๋ฌธ์— ๋ฐœ๋ช…๋˜์—ˆ์œผ๋ฉฐ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. Nix ๋˜๋Š” Guix์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ ์ˆ˜์ค€ ๋ฐฐํฌํŒ์€ ๋‹ค๋ฅธ ์ˆ˜์ค€์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ์‚ฌ๋ผ์ง€๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

BTW, ์‹ค์ œ๋กœ ํ•˜๋‚˜์˜ Linux ๋ฐฐํฌ (Guix)์˜ ๋ฉ”์ผ ๋ง๋ฆฌ์ŠคํŠธ๋ฅผ ๋”ฐ๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋‹ค์ง€ ์žฌ๋ฏธ๋Š” ์—†์ง€๋งŒ ์‹ค์ œ์ ์ธ ๋งŽ์€ ์ž‘์—…์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ผ์„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด์žˆ์–ด์„œ ๊ธฐ์ฉ๋‹ˆ๋‹ค.

@xoviat "Keep Accelerate ์ง€์›"์„ ์ œ์•ˆํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹จ์ง€ SciPy ๋ณ€์ข… (ํ˜„์žฌ ๊ฑฐ์˜ ํ˜„์žฌ ๋ฒ„์ „)์„ ๋ฐ•๋ฌผ๊ด€์˜ ์˜ค๋ž˜๋œ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ํŠน์ • ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์˜ ๊ด€์‹ฌ ๋ณ€์ข…์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค Accelerate๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•œ ์‚ฌ๋žŒ๋“ค์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์„์œ„ํ•œ ์ฐฝ์ž‘๋ฌผ์„ ๊ฐ€์†ํ™”ํ•˜์‹ญ์‹œ์˜ค. "๊ฐ€์žฅ ๋จผ์ € ๊ฐ€์†"ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ์ž์‹ ์ด ์„ ํƒํ•œ ๊ฒฐ๊ณผ์™€ ํ•จ๊ป˜ ์‚ด์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋งˆ ๊ทธ๋“ค์—๊ฒŒ๋Š” ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค ( "์•Œ๋ ค์ง„ ๋ฒ„๊ทธ๊ฐ€ ์•Œ๋ ค์ง€์ง€ ์•Š์€ ๋ฒ„๊ทธ๋ณด๋‹ค ๋‚ซ๋‹ค"). ์™œ ๊ทธ๋“ค์„ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๊ฐ•์ œํ• ๊นŒ์š”?

๋ผ๋ฒจ๋ง๊ณผ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์— ๊ด€ํ•œ ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” "๋†’์€"๋ฒ„์ „ ๋ฒˆํ˜ธ๋กœ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ƒˆ๋กœ์šด ๋ฒ„์ „์ด "๋” ๋‚˜์€"๊ฒƒ์œผ๋กœ ์„ ํ˜•์ ์ธ ์ง„ํ–‰ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ด์ƒ์ ์ธ ์ด๋ฏธ์ง€์—์„œ ๋ฒ—์–ด๋‚˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด ์ด๋ฏธ์ง€๋ฅผ ์ข€ ๋” ํ˜„์‹ค์ ์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ์ด๋ฏธ์ง€๋กœ ๋ฐ”๊พธ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๋ฆด๋ฆฌ์Šค๊ฐ„์— ๋ช…ํ™•ํ•œ ์ˆœ์„œ ๊ด€๊ณ„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ์ผ๊ด€๋œ ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์˜ํ•ด ์ƒ์„ฑ ๋œ ๊ฒƒ์€ ์ผ์‹œ์ ์ธ ์ˆœ์„œ๊ฐ€ ์žˆ์ง€๋งŒ, ์ด๋Š” ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ํ’ˆ์งˆ์ด๋‚˜ ์ ํ•ฉ์„ฑ์— ๋Œ€ํ•œ ์–ด๋–ค ๊ฒƒ๋„ ์˜๋ฏธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ƒํ™” ๋œ ์ด๋ฏธ์ง€๊ฐ€ ๋งž๋‹ค๋ฉด ํฌํฌ๋ฅผ ๋ณผ ์ˆ˜์—†๊ณ  ๊ฐ€์ƒ ํ™˜๊ฒฝ๋„ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. VersionClimber ์™€ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ๋„ ์—†์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€์ด ํ˜„์‹ค์„ ๋ถ€์ •ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ˆ˜์šฉํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋‹ค์–‘์„ฑ์˜ ์„ธ๊ณ„๋ฅผ ์œ„ํ•ด ์ œํ’ˆ์„ ๊ฐœ๋ฐœํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ  ๋ฌด์—‡๋ณด๋‹ค๋„ ํฌ์žฅ ๋ฐ ๋ผ๋ฒจ๋ง).

@khinsen ์„ ํ˜• ๋Œ€์ˆ˜ ํ•จ์ˆ˜์˜ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๊ฐ€ ๊ดœ์ฐฎ๋‹ค๋ฉด ๊ณ„์† ๊ฐ€์†ํ™” ์ง€์›์„๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฃผ๋œ ๋ฌธ์ œ๋Š” ์ด๊ฒƒ์„ ์›ํ•˜๋Š” ์œ ์ผํ•œ ์‚ฌ๋žŒ ์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋”๋ผ๋„ ๊ฐ€์† ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ˆ„๊ตฐ๊ฐ€ SciPy๋ฅผ ๋น„๋‚œํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ผ€์ดํฌ๋ฅผ ๋จน๊ณ  ์‹ถ์–ดํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@xoviat ์•„๋‹ˆ์š”, ์„ ํ˜• ๋Œ€์ˆ˜ ํ•จ์ˆ˜์˜ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๊ฐ€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ํ–ฅ์„๋ฐ›๋Š” ๊ธฐ๋Šฅ์ด ์ „ํ˜€ ํ•„์š”ํ•˜์ง€ ์•Š์€ SciPy ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์ด์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ์–ธ๊ธ‰ ํ•œ ์Šค๋ ˆ๋“œ์—์„œ ๋ˆ„๊ตฐ๊ฐ€ Accelerate๊ฐ€ ๊ฐ์ง€๋˜๋ฉด ์˜ํ–ฅ์„๋ฐ›๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ฑฐ / ๋น„ํ™œ์„ฑํ™” ํ•  ๊ฒƒ์„ ์ œ์•ˆํ–ˆ๋Š”๋ฐ, ์ด๋Š” ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (์ฐธ๊ณ  :์ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋…ธ๋ ฅ์„ ํŒ๋‹จ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค).

์–ด๋–ค๋ฉด์—์„œ ์ด๊ฒƒ์€ ๋ฉ”๊ฐ€ ํŒจํ‚ค์ง€ ๋ฌธ์ œ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ๋ณด๋‹ค ์„ธ๋ถ„ํ™” ๋œ ๋ฐฐํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ์–ด์…ˆ๋ธ”๋ฆฌ ์ˆ˜์ค€ ๋ชจ๋‘์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด HPC ์ปจํ…์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ํ•˜์œ„ ํŒจํ‚ค์ง€๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ LAPACK ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๋„๋ฉ”์ธ ๋ฐ ํ”Œ๋žซํผ ๋ณ„ SciPy ๋ฐฐํฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฐํฌ ์–ด์…ˆ๋ธ”๋Ÿฌ๋ฅผ ์ƒ์ƒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์˜ํ–ฅ์„๋ฐ›๋Š” ๊ธฐ๋Šฅ์ด ์ „ํ˜€ ํ•„์š”ํ•˜์ง€ ์•Š์€ SciPy ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์ด์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ง„์ˆ ์— ๋Œ€ํ•œ ์ตœ์†Œํ•œ์˜ ์ฆ๊ฑฐ๊ฐ€ ์žˆ์œผ๋ฉฐ ์‹ค์ œ๋กœ๋Š” ๊ทธ ๋ฐ˜๋Œ€์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์ง€๋งŒ ํŠน์ • ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋งŒ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ฒฐ๊ณผ๋Š” ์ •ํ™•ํ•˜์ง€๋งŒ ์ •ํ™•ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ, OSX๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํ˜„์žฌ ์„ค์น˜ ํ•œ SciPy์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ, ์ˆ˜์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ณ„๋„์˜ ๋ธŒ๋žœ์น˜๋ฅผ ์œ ์ง€ํ•˜๋Š” ํ•œ, ๋‚˜๋Š” ๋‹น์‹ ์ด ์œ ์ง€ ๋ณด์ˆ˜ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํŠน์ • ๋ธŒ๋žœ์น˜์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์•„๋ฌด๋„ ์—†์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์˜คํ”ˆ ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด์ด๋ฉฐ ์‚ฌ๋žŒ๋“ค์€ ์ž์‹ ์ด ์›ํ•˜๋Š” ๊ฒƒ์„ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ ์ง€์ ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ํšŒ์˜์ ์ž…๋‹ˆ๋‹ค.

์‚ฌ์‹ค ์•„๋‚˜์ฝ˜๋‹ค SciPy๋Š” MKL๋กœ ์ปดํŒŒ์ผ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ์ด ๊ฒฝ์šฐ ์˜ํ–ฅ์„๋ฐ›์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ์ง€์› ๊ฐ€์†ํ™”์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@xoviat ์—ฌ๊ธฐ์— ํฐ ์˜คํ•ด๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š”์ด ํŠน์ •ํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ „ํ˜€ ๊ฐœ์ธ์ ์ธ ์ดํ•ด ๊ด€๊ณ„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. SciPy์˜ ์„ ํ˜• ๋Œ€์ˆ˜ ๋ฃจํ‹ด์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์€ SciPy ๋ฌธ์ œ์— ๋Œ€ํ•œ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ๊ทธ๋Ÿฌํ•œ ์ƒํ™ฉ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ ํ•  ๊ฒƒ์ธ์ง€ ๋ฌผ์—ˆ์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋Š” ๋‹จ์ˆœํžˆ Accelerate ์ง€์›์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์„ ๊บผ๋ฆฌ๋Š” ๊ฒƒ์„ ๋ถ„๋ช…ํžˆ ๋ณด์—ฌ ์ฃผ๋ฉฐ,์ด ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ์˜ํ–ฅ์„๋ฐ›์„ ์ค‘์š”ํ•œ ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์ด ์žˆ์Œ์„ ์ถ”๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์–ด๋””์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? SciPy๊ฐ€ ์ด๋ฏธ Accelerate ์ง€์›์„ ์ค‘๋‹จํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@xoviat ๋ณ„๋„์˜ ๋ธŒ๋žœ์น˜๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ๋ˆ„๊ตฌ์—๊ฒŒ๋‚˜ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ GitHub ์ €์žฅ์†Œ์—์„œ ํ˜ธ์ŠคํŒ… ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ถ„๊ธฐ๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์‚ฌ์šฉ์ž (๋ฐ ๋ฐฐํฌ ์–ด์…ˆ๋ธ”๋Ÿฌ)์—๊ฒŒ ํˆฌ๋ช…ํ•œ ๊ฐœ๋ณ„ SciPy ๋ฒ„์ „์˜ ๋ณ‘๋ ฌ ์กด์žฌ๋ฅผ ๋งŒ๋“ค๊ธฐ์œ„ํ•œ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜๋‚ , "import scipy"๋ผ๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์–ด๋–ค ๋ฒ”์œ„์˜ SciPy ๋ฒ„์ „์ด ์ž‘๋™ํ•ด์•ผํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค (์˜ˆ : ์–ด๋Š ์ •๋„ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์ณค ์Œ). ๊ฐ€์žฅ ์ข‹์€ ๊ฒฝ์šฐ์—๋Š” "SciPy> = 0.8"๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๋‚ด์šฉ์˜ README๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šต๊ด€์€ "์ƒ์œ„"๋ฒ„์ „์ด ํ•ญ์ƒ "๋” ์ข‹์œผ๋ฉฐ"์–ด๋–ค ๊ฒƒ๋„ ์ €ํ•˜ (ํŒŒ๊ดด, ์†๋„ ์ €ํ•˜ ๋“ฑ)ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฐ€์ •์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฐ€์ •์€ ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— ์ฝ”๋“œ์— "scipy2017์„ scipy๋กœ ๊ฐ€์ ธ ์˜ค๊ธฐ"๋ผ๊ณ ๋˜์–ด ์žˆ์œผ๋ฉด ์ด์ „ ๋ฒ„์ „ ์ด๋‚˜ ์ดํ›„ ๋ฒ„์ „๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Œ์ด ๋ชจ๋“  ๋…์ž์—๊ฒŒ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ „ SciPy ๋ฒ„์ „์ด ์‚ฌ๋ผ์ง€๋ฉด (ํšจ๊ณผ์ ์œผ๋กœ ์œ ์ง€ ๊ด€๋ฆฌ ๋ถ€์กฑ์œผ๋กœ) ์ด๋Ÿฌํ•œ ์ฝ”๋“œ๋Š” ๊ณ„์†ํ•ด์„œ ๋ถˆ์•ˆ์ •ํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์ œ๊ฐ€์ด ์Šค๋ ˆ๋“œ์—์„œ ๋งŒ๋“ค๊ณ ์žํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ์š”์ ์ž…๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ๊ณต์กด์ด ํ˜„์‹ค์ž…๋‹ˆ๋‹ค. ๋†’์„์ˆ˜๋ก ์ข‹๋‹ค๋Š” ์ƒ๊ฐ์€ ๊ฟˆ์ž…๋‹ˆ๋‹ค. ๋‹ค์ค‘ ๋ฒ„์ „ ์šฐ์ฃผ๋ฅผ ์ธ์ •ํ•˜๊ณ  ์˜คํ•ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์˜์‚ฌ ์†Œํ†ต์„ ์กฐ์ •ํ•˜์—ฌ ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ์œ„ํ•ด ํ˜„์‹ค์ ์œผ๋กœ ์กฐ์งํ•ฉ์‹œ๋‹ค.

๊ธ€์Ž„, ๋ชฐ๋ผโ€ฆ ๋‚ด ์ƒ๊ฐ์— ๊ฒฝ๊ณ ์™€ ๊ด€๋ จํ•˜์—ฌ ํŠน์ • ๋ฒ„์ „ ๊ฐ€์ ธ ์˜ค๊ธฐ๋Š” ๊ฒฝ๊ณ ๊ฐ€ ์•„๋‹ˆ๋ฉฐ ๋‹ค๋ฅธ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ธˆ์ง€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค๋ช…ํ•˜๋Š”๋Œ€๋กœ ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐํžˆ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํŠน์ • numpy ๋ฒ„์ „์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฒ„์ „์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒฝ๊ณ ๋ฅผ ์„ค์น˜ / ๋Ÿฐํƒ€์ž„์— ์ธ์‡„ํ•˜๋ฉด ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?

๊ทธ๋Ÿฐ ์œ ํ˜•์˜ ์ถ”๊ฐ€ ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๊ฒƒ์ด ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์ง€์˜ฅ์„ ๋งŒ๋“ค ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ๊ฒƒ์ด ์‚ด์•„๋‚จ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์˜ˆ๋ฅผ ๋“ค์–ด ๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์„ ํ˜ผํ•ฉํ•˜๋ฉด ์œ ํ˜• ๊ฒ€์‚ฌ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ๋„ ํ•  ๋•Œ๊นŒ์ง€ ์ž‘๋™ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค (์•„๋ฌด๋„ ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!).
๊ทธ๋ฆฌ๊ณ  ๋‘ ๋ฒ„์ „์„ ํ˜ผํ•ฉํ•˜๋„๋ก ์ œ์•ˆํ•˜์ง€ ์•Š๋Š” ํ•œ scipy2017 ์†”๋ฃจ์…˜์ด ์ƒํ™ฉ์„ ์•…ํ™”์‹œํ‚ฌ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋™์  / ๋Ÿฐํƒ€์ž„ ๊ฐ€์ƒ ํ™˜๊ฒฝ ์„ ํƒ (ํŒŒ์ด์ฌ ์ˆ˜์ค€์—์„œ ๊ฐ€์ ธ ์˜ค๊ธฐ ์ „์— pin_import_version("1.6<numpy<1.10", level="raise") ๊ณผ ๊ฐ™์€)๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ๋” ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

py2 / py3์™€ ๊ฐ™์€ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด์žˆ๋Š” ๊ฒฝ์šฐ ํŠน์ • ๊ฐ€์ ธ ์˜ค๊ธฐ๊ฐ€ ์˜๋ฏธ๊ฐ€ ์žˆ์œผ๋ฉฐ "์ฃผ์š”"๋ผ์ธ์ด ํ‘œ์‹œ๋˜๋Š” ์‹œ๊ฐ„ ์ฒ™๋„์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์˜๊ฒฌ์ด ์žˆ์Œ์„ ์ด๋ฏธ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ NEP # 11596์ด ์ œ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ NEP # 11596์ด ์ œ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ, ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. NEP (๊ฑฐ๋ถ€ ๋œ ๋Œ€์•ˆ์œผ๋กœ semver๋ฅผ ๋ช…์‹œ ์ ์œผ๋กœ ์–ธ๊ธ‰ ํ•จ)์™€๋Š” ๋ณ„๋„๋กœ ์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ ๊ฐœ๋ฐœ์ž์˜ ํ•ฉ์˜๋Š” semver๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ wontfix๋กœ ๋‹ซ์Šต๋‹ˆ๋‹ค.

ํ† ๋ก  ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰