NumPy Scientific Computing Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 2.0.0 ์ถœ์‹œ

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

NumPy 2.0.0์€ 2006๋…„ ์ดํ›„ ์ฒซ ๋ฒˆ์งธ ์ค‘์š”ํ•œ ๋ฆด๋ฆฌ์Šค์ž…๋‹ˆ๋‹ค.
์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ ์„ฑ๋Šฅ ์ตœ์ ํ™” ์™ธ์—๋„ ์ƒˆ ๋ฒ„์ „์—๋Š” ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋œจ๋ฆฌ๋Š” ABI, Python API ๋ฐ C-API์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด NumPy 1.x๋กœ ์ปดํŒŒ์ผ๋œ SciPy ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ NumPy 2.0์—์„œ ์ž‘๋™ํ•˜๋ ค๋ฉด ๋‹ค์‹œ ์ปดํŒŒ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ NumPy 2.0์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ฒ„๊ทธ๋Š” ์Šค์นผ๋ผ ํ‘œํ˜„์‹์˜ ์ •๋ฐ€๋„ ์œ ์ง€์™€ ๊ด€๋ จ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "np.float32(3) + 3"์€ ์ด์ œ float64๊ฐ€ ์•„๋‹Œ float32 ์œ ํ˜•์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์—ฌ๋Ÿฌ ์œ ํ˜•์ด ํฌํ•จ๋œ ํ‘œํ˜„์‹์˜ ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋†’์€ ์ •๋ฐ€๋„๋ฅผ ๊ฐ€์ง„ ์œ ํ˜•์ด ๊ฒฐ๊ณผ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, "np.array([3], dtype=np.float32) + np.float64(3)"์€ float64 ์œ ํ˜•์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ์ •์ˆ˜ ์œ ํ˜•์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Windows โ€” 64๋น„ํŠธ ์‹œ์Šคํ…œ์—์„œ๋Š” ์ด์ œ 64๋น„ํŠธ ์ •์ˆ˜ํ˜•์ด ์‚ฌ์šฉ๋˜๊ณ , 32๋น„ํŠธ ์‹œ์Šคํ…œ์—์„œ๋Š” 32๋น„ํŠธํ˜•์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(์ด์ „์—๋Š” C ํƒ€์ž…์˜ longํ˜•๊ณผ ์œ ์‚ฌํ•œ ํ˜•ํƒœ๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ์ง€๋งŒ, ์ด์ œ๋Š” np.intp์™€ ๋™์ผํ•œ ํ˜•ํƒœ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค).

C-API์˜ ์ผ๋ถ€ ์ •์˜๊ฐ€ ๋Œ€์ฒด๋˜๊ฑฐ๋‚˜ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด PyArray_Descr ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. NPY_MAXDIMS ๋ฐ NPY_MAXARGS ๋งคํฌ๋กœ๋ฅผ ํ†ตํ•ด ์„ค์ •๋œ ์ตœ๋Œ€ ์ฐจ์› ๋ฐ ์ธ์ˆ˜ ์ˆ˜๊ฐ€ 64๊ฐœ๋กœ ๋Š˜์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ณตํ•ฉ ์œ ํ˜•์€ C99 ์‚ฌ์–‘(cfloat_t, cdouble_t, clongdouble_t)์˜ ํ‘œ์ค€ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ dtype์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด C API๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋‹จ์ˆœํ™”๋œ ์ดˆ๊ธฐํ™” ํ•จ์ˆ˜ PyArray_ImportNumPyAPI ๋ฐ PyUFunc_ImportUFuncAPI๊ฐ€ ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Python API๋Š” ๊ณต๊ฐœ API์™€ ๋น„๊ณต๊ฐœ API๋ฅผ ๋ณด๋‹ค ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๋ชจ๋“ˆ ๊ตฌ์กฐ๋ฅผ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ์•ฝ 100๊ฐœ์˜ ํ•จ์ˆ˜, ๋ชจ๋“ˆ ๋ฐ ์ƒ์ˆ˜๊ฐ€ ๊ธฐ๋ณธ "np" ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฐ–์œผ๋กœ ์ด๋™๋˜๊ฑฐ๋‚˜ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
np.lib ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ๊ฐœ์ฒด ์ˆ˜๊ฐ€ 10%, numpy.lib ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ๊ฐœ์ฒด ์ˆ˜๊ฐ€ 80% ์ค„์—ˆ์Šต๋‹ˆ๋‹ค. numpy.core ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ๋น„๊ณต๊ฐœ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค. np.ndarray ๋ฐ np.generic ํด๋ž˜์Šค์—์„œ ์ผ๋ถ€ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ์ž‘์—…์œผ๋กœ ์ƒˆ ๋„ค์ž„์ŠคํŽ˜์ด์Šค numpy.stringsf๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์—๋Š” ๋ชจ๋“  numpy.fft ํ•จ์ˆ˜์˜ float32 ๋ฐ longdouble ์œ ํ˜• ์ง€์›, ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ํ‘œ์ค€ Array API ์ง€์›, ์ƒˆ๋กœ์šด ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฐ ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž์—ด ์œ ํ˜•์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ํ•จ์ˆ˜ sort, argsort, partition ๋ฐ argpartition์— ๋Œ€ํ•ด Intel x86-simd-sort ๋ฐ Google Highway ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ ์ตœ์ ํ™”๊ฐ€ ์ˆ˜ํ–‰๋˜์—ˆ์œผ๋ฉฐ, numpy.char ๋ชจ๋“ˆ์—์„œ ๊ณ ์ • ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•œ ์ž‘์—…์ด ๊ฐ€์†ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด API๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ถ”์  ๋ฐ ์ž์ฒด ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•œ opt_func_info.

์ถœ์ฒ˜ : opennet.ru

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster