๊ณผํ ์ปดํจํ ์ ์ํ 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
