๊ฐ์ฒด ๋ฐฐ์ด์ ์๋ ์์ฑ์ ์ต๊ทผ numpy์์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ๋์ํ์ง๋ง ์ฌ์ฉ์ ์ ๊ณต ์ธ์๊ฐ ๋น๊ฐ์ฒด ๋ฐฐ์ด๋ก ๋ณํ ๊ฐ๋ฅํ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ํน์ ์ข ๋ฅ์ ์ผ๋ฐ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋ค์ ์ด๋ ค์ธ ๊ฒ ๊ฐ์ต๋๋ค.
Matplotlib์๋ ๋ค์ ์ค๋ํซ์ด ํฌํจ๋์ด ์์ต๋๋ค.
# <named ("string") colors are handled earlier>
# tuple color.
c = np.array(c)
if not np.can_cast(c.dtype, float, "same_kind") or c.ndim != 1:
# Test the dtype explicitly as `map(float, ...)`, `np.array(...,
# float)` and `np.array(...).astype(float)` all convert "0.5" to 0.5.
# Test dimensionality to reject single floats.
raise ValueError(f"Invalid RGBA argument: {orig_c!r}")
๊ทธ๋ฌ๋ ๋๋๋ก ํจ์๋ ๋ค์ํ ํ์์ ์์ ๋ฐฐ์ด ๋ก ํธ์ถ๋ฉ๋๋ค(์: ["red", (0.5, 0.5, 0.5), "blue"]
) -- ์ฐ๋ฆฌ๋ ValueError๋ฅผ ์ก์์ ๋์ ํ ๋ฒ์ ํ๋์ฉ ๊ฐ ํญ๋ชฉ์ ๋ณํํฉ๋๋ค.
์ด์ np.array(c)๋ฅผ ํธ์ถํ๋ฉด DeprecationWarning์ด ๋ฐ์ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? np.min_scalar_type(c)
์ ๊ฐ์ ๊ฒ๋ ๊ฒฝ๊ณ ๋ฅผ ๋ด๋ณด๋
๋๋ค(๊ทธ๋ ์ง ์์์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๊น?). ๊ทธ๋์ "์ด๊ฒ์ ๋ฐฐ์ด๋ก ๋ณํํ๋ค๋ฉด dtype์ ์ด๋ป๊ฒ ๋ ๊น์?"๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ์ด ๋ช
ํํ์ง ์์ต๋๋ค.
1.19.0.dev0+bd1adc3 3.8.0 (๊ธฐ๋ณธ๊ฐ, 2019๋
11์ 6์ผ, 21:49:08)
[GCC 7.3.0]
ํ๋์ ์ต์
์
```ํ์ด์ฌ
๋
ธ๋ ฅํ๋ค:
# ๊ฒ์๋ณด๋ค ์์์ ์ฌ์ฉ ์ค๋จ์ ๋์ฒดํ ์ค๋ฅ๋ก ์น๊ฒฉํฉ๋๋ค.
warnings.catch_warnings() ์ฌ์ฉ:
warnings.filterwarnings('raise', DeprecationWarning, message="...")
c_arr = np.asarray(c)
์์ธ(DeprecationWarning, ValueError):
# ValueError์ ๋ํด ํ์ฌ ๋ฌด์์ ํ๋
๋๋์ด๋ฅผ ์๊ฐํ๊ณ , ์คํจํ ํ
์คํธ ๋ฐ๊ด ๊ณณ GH-15045์์ ์ธ๊ธ์ด ์ธ์คํด์ค๋๋ DeprecationWarning
๋์ ์ง์ ์ด ๋ฐ๊ด ๋ช ๋
๋์ ValueError
ํ์ํ ๊ฒ๋ณด๋ค ๋ ๋ง์ ์ฝ๋ ์ดํ์ ์์ธ์.
warnings.catch_warnings
๋ ์ค๋ ๋๋ก๋ถํฐ ์์ ํ์ง ์์ต๋๋ค. ์ด๋ก ์ธํด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ํ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค.
์ฝ๋ ๋ณ๋์ ์ฌ์ฉ ์ค๋จ ๊ธฐ๊ฐ์ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
Matplotlib๋ ์ด๋ฌํ ์ข ๋ฅ์ ๋ณ๊ฒฝ ์ฌํญ์ ์กฐ๊ธฐ์ ์ ํํ ํฌ์ฐฉํ๊ธฐ ์ํด ๊ฒฝ๊ณ ์ ํจ๊ป ํ ์คํธ ์ค์ํธ๋ฅผ ์คํํ๋ฏ๋ก ์์คํ ์ด ์ ์๊ฒ ์๋ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. :)
๊ทธ๋ฌ๋ AFAICT์๋ ํฉ๋ฆฌ์ ์ผ๋ก ์ฌ์ด ์์ ์กฐ์ฐจ ์์ต๋๋ค(์์์ ์ง์ ํ ๋๋ก ์ ์๋ ์์ ์ ์ค๋ ๋๋ก๋ถํฐ ์์ ํ์ง ์์)./
๋๋ ์ฌ๊ธฐ์ @antzer ์ ์์ ์
๋ฌธ์ ๋ ์ค๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ์๊ฐ ์ค์ ๋ก... ๊ฒฝ๊ณ ๋ฅผ ๋ด๋ณด๋ด์ง ์๊ณ "๊ฒฝ๊ณ ๋ฅผ ๋ด๋ณด๋ด๋๊ฐ"๋ผ๊ณ ๋ฌผ์ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ฒฝ๊ณ ๋ฅผ ์ต์ ํ๋ ๊ฒ์ ์ค๋ ๋๋ก๋ถํฐ ์์ ํ์ง ์์ต๋๋ค.
์ค๋ ๋ ์์ ์ฑ ๊ฒฝ๊ณ : https://bugs.python.org/issue37604
AFAIK, ์ง์ ์ค๋จ์ ๋ฆด๋ฆฌ์ค ๋ถ๊ธฐ์ ์์ต๋๋ค. ๋๋๋ฆฌ์๊ฒ ์ต๋๊น? ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์์ ์ฌํญ์ ๋ฐฑํฌํธ๊ฐ ํ์ํฉ๋๋ค. ๋ฆด๋ฆฌ์ค ๋ธ๋์น ํ ์์ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ์ง ์์๊ณ ๋ง์ง๋ง ๋ ๋น๋๊น์ง ์ผ๊ฐ ๋น๋์ ํ์๋์ง ์์ ์ด์ ๊ฐ ์์ง ๋ช ํํ์ง ์์ต๋๋ค. ๋๋ ๋ธ๋์น ์ดํ์ ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ์ง ์์๊ณ ์๋ง๋ #15040์ ์ ์ธํ๊ณ ๋ง์คํฐ ๋ธ๋์น์์ ๊ทธ ์ดํ๋ก ์ปค๋ฐ์์ ๋งค์ฐ ์์ฌ์ค๋ฌ์ด ๊ฒ์ด ์์ด ๋ณด์ ๋๋ค.
IMHO(๊ทธ๋ฆฌ๊ณ ์์ @mattip ์ ์์ ๊ณผ
๋๋ ๋ค์ค ๋น๋ ์ฒ๋ฆฌ ๋ถ๊ธฐ๊ฐ ๋ง์คํฐ์ ๋ค๋ฅผ ์ ์์ต๋๋ค.
FWIW ์ ๋ ํนํ ๋น์ ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ด๋ ฌํ ์ฌ์ฉ์๋ก์ ์ด ๋ณ๊ฒฝ์ ๋ํด ํญ์ -1 ์ด์์ด์์ต๋๋ค. ํ์ง๋ง ์ด์จ๋ ์ด์ SciPy 1.4.0rc2
์ค๋น์ ๋ํ ์๋ฐฑ ๊ฐ์ง ํ
์คํธ ์คํจ์ ๋ํด ๋ฌด์์ ํด์ผ ํ๋์ง ์์๋ด์ผ ํฉ๋๋ค. https://github.com/scipy/scipy/pull/11161
์ด์ ์๋ฐฑ ๋ฒ์ ํ ์คํธ ์คํจ์ ๋ํด ๋ฌด์์ ํด์ผ ํ๋์ง ์์๋ด์ผ ํฉ๋๋ค.
์ฌ์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฌ์ฉํ์ฌ ์ฐ๋ฆฌ์ ์์ DeprecationWarning
๋์ ValueError
๋ค์ด ์คํธ๋ฆผ ํ๋ก์ ํธ์ ์ฌ์ฉ์์๊ฒ ์ ํํ ํ ์์๋ ์ ์ ๊ธฐ๊ฐ์ ์ ๊ณตํ๋ ๊ฒ์ด ์์ต๋๋ค.
AFAIK, ์ง์ ์ค๋จ์ ๋ฆด๋ฆฌ์ค ๋ถ๊ธฐ์ ์์ต๋๋ค. ๋๋๋ฆฌ์๊ฒ ์ต๋๊น?
์ ์๊ฐ์๋ ๋น๊ฐ ๋ด๋ฆฌ๋ ๋ฌธ์ ์
๋๋ค. ์ด์ Pandas, Matplotlib, SciPy, ๋ด๋ถ numpy.testing
๋ฐ NumPy ufuncs, ==
๋ฑ์ ๋ฌธ์ ๋ชฉ๋ก์ด ์์ต๋๋ค. ์ง๊ธ ๋ณ๊ฒฝ ์ฌํญ์ ๋๋๋ฆฌ๊ณ ๋ชจ๋ ํญ๋ชฉ์ ํ๊ฐ/์์ ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ง์ ์ค๋จ์ ๋ค์ ๋์
ํฉ๋๋ค.
๋ณด๋ฅ ์ค์ธ deprecationwarning์ ๋ํด ํํํ ์ ์์ต๋๊น?
๊ทธ๋ฐ ์์ผ๋ก ๋ค์ด์คํธ๋ฆผ ํ๋ก์ ํธ๋ ๋ฌด์ ๋ชฉ๋ก์ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ DeprecationWarning์ผ๋ก ๋ค์ ์ ํํ๋ฉด ๋ค์ ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ฒ ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ "์ผ๋ จ์ ๊ฐ์ด ์ฃผ์ด์ง๋ฉด matplotlib๊ฐ ๋จ์ผ ์์์ธ์ง ์์ ๋ชฉ๋ก์ธ์ง ์ด๋ป๊ฒ ๊ฒฐ์ ํ ์ ์๋์ง"๋ก ๋ณด์ด๋ ์๋ ๋ฌธ์ ์์ ๋ฒ์ด๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ์ ndarray๋ก ์บ์คํ
ํ๊ณ ํด๋น ๋ฐฐ์ด์ dtype์ ํ์ธํ ํ์๊ฐ ์๋ ์๋ฃจ์
์ด ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ค ์ข
๋ฅ์ ์ฌ๊ท is_a_color()
ํจ์๊ฐ ๋ ๋์ ์๋ฃจ์
์ผ ์ ์์ต๋๋ค.
#15053์์ 1.18.x์ ๋ณ๊ฒฝ ์ฌํญ์ ๋๋๋ ธ์ต๋๋ค.
scipy์ pandas CI๋ฅผ ๊นจ๋ ๊ฒ์ ๋ง์คํฐ์์๋ ์ผ์์ ์ผ๋ก ๋๋๋ฆด ์ ์์ ์ ๋๋ก ์ง์ฆ๋ฉ๋๋ค. ๊ทธ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ๋(ํ ๋ฌ ์ด๋ด)๋ก ๋์๊ฐ๊ณ ์ถ์ต๋๋ค. ํ์ง๋ง ํด๊ฒฐ์ฑ
์ ์ฐพ์์ผ ํ ์๋ ์์ต๋๋ค. ๋ํ pandas๊ฐ ํ๋ ์์ ์์
์ catch_warnings
๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฝ๊ฐ ๊ฑฑ์ ์ค๋ฝ์ต๋๋ค.
์ ๋ง๋ก ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ์ค๋ ๋๋ก๋ถํฐ ์์ ํ ๊ฒฝ๊ณ ์ต์ ๊ฐ ํ์ํฉ๋๋ค. np.seterr
์ฌ๋กฏ์ ๊ฐ์ง ์ ์์ต๋๋ค :/.
์ฐ๋ฆฌ๋ "์ผ๋ จ์ ๊ฐ์ด ์ฃผ์ด์ง๋ฉด matplotlib๊ฐ ๋จ์ผ ์์์ธ์ง ์์ ๋ชฉ๋ก์ธ์ง ์ด๋ป๊ฒ ๊ฒฐ์ ํ ์ ์๋์ง"๋ก ๋ณด์ด๋ ์๋ ๋ฌธ์ ์์ ๋ฒ์ด๋ ๊ฒ ๊ฐ์ต๋๋ค.
@antzer ๊ฐ ์ ๊ธฐํ๋ ๋ฌธ์ ๊ฐ ๋ ์ผ๋ฐ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋ ผ๋ฆฌ๋ก ๋ค์ํ ์ ํ์ ์ ๋ ฅ์ ๋ฐ๋ ํจ์๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋๋ค.
ndarray(flexible_input)
use_the_array
์ด๋ฌํ ์ฝ๋์ dtype=object
๋ฅผ ์ถ๊ฐํ ์ ์์ผ๋ฏ๋ก ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
๋ํ pandas๊ฐ ํ๋ ์์ ์์ ์
catch_warnings
๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฝ๊ฐ ๊ฑฑ์ ์ค๋ฝ์ต๋๋ค.
@seberg ๊ฐ suppress_warnings
๋ ์ข์ง ์์๋์?
@rgommers ์๋์, suppress_warnings
๊ฒฝ๊ณ ์ต์ ๊ฐ ์๊ตฌ์ ์ด์ด์๋ ์ ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ๊ทธ๊ฒ์ ์ต์ ํ์ด์ฌ ๋ฒ์ ์์ ์์ ๋์์ผ๋ฏ๋ก ๋ ์ด์ ํ์ํ์ง ์์ต๋๋ค(์ค์ฒฉ์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋ ๋์ ์์ฑ์ ๊ฐ์ง๋ง ์ค๋ ๋ ์์ ์ฑ์ ์ง์ํ์ง ์์ต๋๋ค. ํ์ด์ฌ ์ธ๋ถ์์ ๊ฐ๋ฅํ์ง ํ์คํ์ง ์์ผ๋ฉฐ ์ฌ์ง์ด ๊ทธ๋ ๋ค๋ฉด ์๋ง๋ ๋ฐ๋์งํ์ง ์์ ๊ฒ์
๋๋ค)
๋ฌธ์ ๊ฐ ์๋ ์ฌ๋ก๊ฐ ์๋ ์๋(https://numpy.org/neps/nep-0034.html)์ ์ด๊ธ๋๋์ง ์์ ํ ํ์ ํ ์๋ ์์ต๋๋ค.
์ด์จ๋ , ํ์ถ๊ตฌ๋ "๋น์ ์ ๊ด์ฌ์ ๊ฐ์ฌํ์ง๋ง ์ฐ๋ฆฌ๋ ๋ช ์์ ์ผ๋ก ์ปจํ ์คํธ ์ข ์ ๊ฐ์ฒด dtype์ ์ํ๊ณ ๋ฌธ์ ๊ฐ ์๋ ์ ๋ ฅ์ ์ค์ค๋ก ์ฒ๋ฆฌํ ๊ฒ์ ๋๋ค"๋ผ๋ ๋ผ์ธ์ ๋ฐ๋ผ ์ด์ ๋์์ ๋ช ์์ ์ผ๋ก ํ์ฑํํ๋ ๊ฒ์ ๋๋ค. ์ค ํ๋์ ๊ฐ์ ๊ฒ
~~~
np.array(๋ฐ์ดํฐ, dtype='allow_object')
np.array(๋ฐ์ดํฐ, allow_object_dtype=True)
np.array_create_allow_object_dtype() ์ฌ์ฉ:
np.array(๋ฐ์ดํฐ)
~~~
๋ชจ๋ ๊ทธ๋ค์ง ์์์ง ์๊ณ ์ด๋ฆ ์ง์ ์ด ํ์คํ ๊ฐ์ ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ํ๋์ ์์กดํ๊ณ (์ ์ด๋ ๋น๋ถ๊ฐ์) ๊ทธ๊ฒ์ ์ ์งํ๊ณ ์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํ ๊นจ๋ํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
์ค์ ๋ก matplotlib์ ๊ฒฝ์ฐ๊ฐ ์๋๋๊น?
with np.forbid_ragged_arrays_immediately():
np.array(data)
์ค์ ๋ก ๊ฐ์ฒด dtype์ ์ป๋ ๋์ ์ค๋ฅ๋ฅผ ์ก๊ณ ์ถ๊ธฐ ๋๋ฌธ์?
ํ์ฌ ๋ง์คํฐ์ ๋ํด ๋ณด๋ฅ ์ค์ธ ์ง์ ์ค๋จ์ ๋๋๋ฆฌ๊ธฐ๊ฐ ์์ต๋๋ค. 1.18์์์ ๊ฐ์ด ์์ ํ ๋๋๋ ค์ผ ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ์์ ์ฌํญ๋ ์ ๊ฑฐ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. @mattip ์ฅ๊ธฐ์ ์ผ๋ก ๋ฌด์์ ํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ ๋๊น์ง ๋ ๋ชฉํ๋ก ์ผ์ ๋ณต๊ท์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
FWIW ๋ด ์๊ฐ์ mpl์์ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๋๋ถ๋ถ์ ์์น๋ ์์ ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ @timhoffm์ด ์ ์ํ API๊ฐ with np.forbid_ragged_arrays_immediately:
๋ณด๋ค ๋ ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋ํ๋ฉด ํ์๋ ์ ์์ ๊ด์ ์์ ์ฝ๊ฒ ์์ฑํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค(raise if np.array(..., allow_object=True).dtype == object
) ๋ฐ๋ฉด ๋ฐ๋( try: with np.forbid: ... except ValueError: ...
)๋ ์ฌ์ ํ ๊ฐ์ฒด ๋ฐฐ์ด์ ์์ฑํ๋ ค๋ ๊ฒฝ์ฐ ๋ ํจ์จ์ ์
๋๋ค. ๊ทธ๋ฌ๋ CM(๋จ์ง "์ฌ์ฉ ์ค๋จ ๊ธฐ๊ฐ์ ๋ก์ปฌ๋ก ์ด๋")์ ์๋ ๊ฒ๋ณด๋ค ๋ซ์ต๋๋ค.
(๋ค์ ๋งํ์ง๋ง, ๋๋ ๋ณ๊ฒฝ์ด ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๊ฒ์ ๋จ์ง ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์คํ๋๋๋์ ๋ฌธ์ ์ผ ๋ฟ์ ๋๋ค.)
์, API๊ฐ ์ด๋ป๊ฒ ์๊ฒผ๋์ง ์์๋ด๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๋ง์ ์ฌ๋๋ค์ด ์ง์ ํ๋ฏ์ด ํ์ฌ ๋ ๊ฐ์ง ์ฃผ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
object
๋ฐ "allow ragged"
ํผ๋. ๊ฐ์ฒด์ ํฉ๋ฆฌ์ ์ธ ์ ํ์ด ์๋ ๊ฒฝ์ฐ(์ Decimal
) ์ค์ ๋ก ๊ฒฝ๊ณ /์ค๋ฅ๋ฅผ ๋ฐ๊ณ ์ถ์ง๋ง dtype=object
์ ๋ฌํด์ผ ํ ์๋ ์์ต๋๋ค.๋ง์ง๋ง์ผ๋ก, ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ฐ๋ฆฌ์ ์ฝ๋์ ์ง์ด๋ฃ๋ ๋ฐฉ๋ฒ์ ์์๋ด์ผ ํฉ๋๋ค. :). ndmin
๋ ์ต์ํ ๋น์ ์์ ๋์์ ์ ์ดํ๋ โโํ๋๊ทธ๋ฅผ ์ถ๊ฐํ๋ ๋ ๋ค๋ฅธ ๋์์ด ๋ ์ ์์ต๋๋ค.
ํ์ฌ ๋ง์คํฐ์ ๋ํด ๋ณด๋ฅ ์ค์ธ ์ง์ ์ค๋จ์ ๋๋๋ฆฌ๊ธฐ๊ฐ ์์ต๋๋ค. 1.18์์์ ๊ฐ์ด ์์ ํ ๋๋๋ ค์ผ ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ์์ ์ฌํญ๋ ์ ๊ฑฐ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. @mattip ์ฅ๊ธฐ์ ์ผ๋ก ๋ฌด์์ ํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ ๋๊น์ง ๋ ๋ชฉํ๋ก ์ผ์ ๋ณต๊ท์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋๋ ์์ ํ ๋๋๋ฆฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ๋ณด์ง ์๊ณ ์ง๊ธ ์๋ฏธ๊ฐ ์๋ ๋ถ๋ถ์ ๋ค์ ๋์ ํฉ๋๋ค. ๋ค์ ๋งํ์ง๋ง, ๋ฌด์ธ๊ฐ๋ฅผ ๋๋๋ฆฌ๋ ๊ฒ์ ๋ฌด์์ด ์ข๊ณ ๋์จ์ ๋ํ ๊ฐ์น ํ๋จ์ด ์๋๋ฉฐ, ๋ณํฉ ๋ฒํผ์ ๋๋ฌ ๋ฐฉ๊ธ ๊นจ๋จ๋ฆฐ ๋ง์ ๊ฒ๋ค์ ํธ๋ ์ค์ฉ์ ์ธ ๋ฐฉ๋ฒ์ผ ๋ฟ์ ๋๋ค. NEP์์ ์์ธกํ์ง ๋ชปํ ์ํฅ๊ณผ ํด๊ฒฐ๋์ง ์์ ๋ฌธ์ ๊ฐ ๋ถ๋ช ํ ์์ผ๋ฏ๋ก ๋จผ์ ๋๋๋ฆฌ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ์ผ์ ๋๋ค.
์์ง ๋๋๋ฆฌ์ง ์๋๋ค๋ ์ฃผ์ฅ - ๋ณ๊ฒฝ ์ฌํญ์ด ๋ง์คํฐ์ธ ๋์ ๋ค์ด์คํธ๋ฆผ CI ์คํ์ ํ์ฉํ์ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์ด๋ป๊ฒ ์๊ฒผ๋์ง ์๋ํ๊ณ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๋ค์ด์คํธ๋ฆผ CI๋ ๋นจ๊ฐ์์ด๋ฉฐ _๋งค์ฐ_ ๋์์ด ๋์ง ์์ต๋๋ค. ์ด์ ์คํจ ๋ชฉ๋ก์ด ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ์ ์ถ์ ์กฐ๊ธ ๋ ์ฝ๊ฒ ๋ง๋ค๊ธฐ ์ํด CI๋ฅผ ๋นจ๊ฐ์์ผ๋ก ์ ์งํ ํ์๊ฐ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์ด๋ Matplotlib์ CI๋ ๋ง์คํฐ ๋ธ๋์น๊ฐ ์๋ pip install --pre
์ ๋ํด ์คํ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์ด๋ Matplotlib์ CI๋ ๋ง์คํฐ ๋ธ๋์น๊ฐ ์๋
pip install --pre
์ ๋ํด ์คํ๋ฉ๋๋ค.
๊ทธ๊ฒ์ ๊ทธ๊ฒ์ด ๋ณด์ด๋ ๋ฐค์ ๋ฐํด์์ ๋น๊ธฐ๋ ๊ฒ์
๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ์ด๋ฏธ 1.18.0rc1์ ๋ํด ๋๋๋ ค์ก์ผ๋ฏ๋ก PyPI์์ --pre
๋ก ์ค์นํ๋ ๊ฒฝ์ฐ ๋ณ๊ฒฝ ์ฌํญ์ด ํ์๋์ง ์์์ผ ํฉ๋๋ค.
์์ ์๊ฒฌ ์ค ์ผ๋ถ๋ NEP 34์์ ์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ฌ๊ณ ํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ด ์ค๋ ๋๊ฐ ์ด ํ ๋ก ์ ๊ณ์ํ๊ธฐ์ ์ ์ ํ ์ฅ์์ธ์ง ํ์คํ์ง ์์ง๋ง ์ฌ๊ธฐ๋ก ์ด๋ํฉ๋๋ค. (๋ค๋ฅธ ๊ณณ์์ ๋ ผ์ํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์๋ฌด๋ฐ ํด๊ฐ ์์ต๋๋ค. ์ฃผ์์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๋ ๊ฒ์ ์ฝ์ต๋๋ค. :smile: ๋ํ ์ฌ๋ฌ๋ถ ์ค ์ผ๋ถ๋ slack์ ๋ํ ํ ๋ก ์์ ์ด๋ฌํ ์ฃผ์์ ๋ณํ์ ๋ณธ ์ ์ด ์์ต๋๋ค.)
์ต๊ทผ์ ์ด๊ฒ์ ๋ํด ์๊ฐํ ํ์ @timhoffm ์ ์ฒซ ๋ฒ์งธ ์ ์๊ณผ ๊ฐ์ ์์ด๋์ด๋ฅผ dtype
์ธ์๋ฅผ array
ํ๋ฉด ํจ์๊ฐ 1์ฐจ์ ๊ฐ์ฒด ๋ฐฐ์ด์ ๋ง๋ค์ด ๋ถ๊ท์นํ ๋ชจ์์ ์
๋ ฅ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ค์ ๋ก ์ด๊ฒ์ ๋น์ ํ ์
๋ ฅ์ด ์๋์ผ๋ก ๊ฐ์ฒด ๋ฐฐ์ด๋ก ๋ณํ๋๋ dtype=None
์ NEP-34 ์ด์ ๋์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. dtype
๋ํ ๋ค๋ฅธ ๊ฐ์ด ์ ๊ณต๋๋ฉด( None
๋๋ object
) ์
๋ ฅ์ด ๋ถ๊ท์นํ ๋ชจ์์ด๋ฉด ์ฌ์ฉ ์ค๋จ ๊ฒฝ๊ณ ๊ฐ ์ ๊ณต๋ฉ๋๋ค. NumPy์ ํฅํ ๋ฒ์ ์์๋ ํด๋น ๊ฒฝ๊ณ ๊ฐ ์ค๋ฅ๋ก ๋ณํ๋ฉ๋๋ค.
์ด์ dtype=object
๋ฅผ ์ฌ์ฉํ์ฌ ๋น์ ํ ์
๋ ฅ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๋ฌธ์ ์ ๋ํ ์ข์ ํด๊ฒฐ์ฑ
์ด ์๋๋ผ๋ ๊ฒ์ด ๋ถ๋ช
ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด์์ ์ผ๋ก๋ "๋น์ ํ ๋ฐฐ์ด"์์ "๊ฐ์ฒด ๋ฐฐ์ด"์ ๊ฐ๋
์ ๋ถ๋ฆฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ๋ค์ ์์ ํ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค. ์๋ํ๋ฉด ์ฐ๋ฆฌ๊ฐ ๋น์ ํ ๋ฐฐ์ด์ ์ฒ๋ฆฌํ๊ณ ์ ํ ๋ ์ฐ๋ฆฌ๊ฐ ์ ํํ ์ ์๋ ์ ์ผํ ๊ฒ์ ๊ฐ์ฒด ๋ฐฐ์ด์ ์์ฑํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ฐ๋ฉด์ ๋๋๋ก ์ฐ๋ฆฌ๋ ๊ฐ์ฒด ๋ฐฐ์ด์ ์ํ์ง๋ง ๋ถ๊ท์นํ ๋ชจ์์ ์
๋ ฅ์ ์ํ์ค์ ๊ฐ์ฒด ๋ฐฐ์ด๋ก ์๋ ๋ณํํ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ( @seberg ์ ๋ง์ง๋ง ๋๊ธ ํญ๋ชฉ 1 ์ฐธ์กฐ) f1
, f2
, f3
๋ฐ f4
๊ฐ Fraction
๊ฐ์ฒด์ด๋ฉฐ Fraction
์ ๊ฐ์ฒด ๋ฐฐ์ด๋ก ์์
ํ๊ณ ์์ต๋๋ค. ๋น์ ํ ๋ฐฐ์ด์ ๋ง๋๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๋ค. ์ค์๋ก a = np.array([f1, f2, [f3, f4]], dtype=object)
์ ์์ฑํ๋ฉด NEP 34๊ฐ ์๋ ๋ชจ๋ ์ด์ ๋๋ฌธ์ ์ค๋ฅ๋ฅผ ์์ฑํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฌ๋ NEP 34๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธธ์ด๊ฐ 3์ธ 1์ฐจ์ ๋ฐฐ์ด์ด ์์ฑ๋ฉ๋๋ค.
@timhoffm ์ ๋ ๋ฒ์งธ ์ ์๊ณผ ๊ฐ์ด ์๋ก์ด ํค์๋ ์ธ์๋ฅผ ์ถ๊ฐํ๋ ๋์์ ํ์ ์ด์์ผ๋ก ๋ณต์กํด ๋ณด์
๋๋ค. ์ฐ๋ฆฌ๊ฐ ํด๊ฒฐํ๋ ค๊ณ ํ๋ ๋ฌธ์ ๋ ๋ถ๊ท์นํ ์
๋ ฅ์ด ์๋์ผ๋ก 1์ฐจ์ ๊ฐ์ฒด ๋ฐฐ์ด๋ก ๋ณํ๋๋ "๋ฐ์ด"์
๋๋ค. ๋ฌธ์ ๋ dtype=None
๊ฐ array
์ ๋ฌ๋ ๋๋ง ๋ฐ์ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ dtype=None
๋ฅผ dtype=<special-value-that-enables-ragged-handling>
๋ก ๋์ฒดํ์ฌ ์ด์ ์ ๋ฒ๊ฑฐ๋ก์ด ๋์์ ์ ์งํ๋๋ก ์๊ตฌํ๋ ๊ฒ์ ์ค๋ช
ํ๊ธฐ ์ฌ์ด API์ ๋ํ ๊ฐ๋จํ ๋ณ๊ฒฝ์
๋๋ค. ์ ๋ง ๊ทธ ์ด์์ด ํ์ํฉ๋๊น?
์ด์
dtype=object
๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๊ท์นํ ๋ชจ์์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๋ฌธ์ ์ ๋ํ ์ข์ ํด๊ฒฐ์ฑ ์ด ์๋๋ผ๋ ๊ฒ์ด ๋ถ๋ช ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด์์ ์ผ๋ก๋ "๋น์ ํ ๋ฐฐ์ด"์์ "๊ฐ์ฒด ๋ฐฐ์ด"์ ๊ฐ๋ ์ ๋ถ๋ฆฌํฉ๋๋ค.
ํฉ๋ฆฌ์ ์ผ๋ก ๋ค๋ฆด ์๋ ์์ต๋๋ค. NumPy์๋ ์ค์ "๋น์ ํ ๋ฐฐ์ด" ๊ฐ๋
์ด ์๋ค๋ ์ ์ ์ง์ ํ๋ ๊ฒ๋ ์ข์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง ์๋ ๊ฒ(๋ฌธ์์์ "ragged" ๊ฒ์, ๋ฌธ์ ์ถ์ ๊ธฐ ๋๋ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์์ ์ํ๋ ๊ฒฝ์ฐ ํ์ธ), DyND ๋ฐ XND๊ฐ ์ง์ํ๋ ๊ฒ์
๋๋ค. "์ฌ์ฉ์๋ฅผ ํํน์ํค๋ np.array([1, [2, 3]])
ํ์๋ฅผ ์ ๊ฑฐํ๊ณ ์ ํฉ๋๋ค"๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ์๋ก์ด API๋ก "๋น์ ํ ๋ฐฐ์ด"์ ๋ฒ ์ดํนํ๋ ๊ฒ์ ๋งค์ฐ ์ฃผ์ํด์ ์ํํด์ผ ํ๋ฉฐ, ์ด๋ ์ฐ๋ฆฌ๊ฐ ํ๋ณดํ๋ ค๋ ๊ฒ์ด ์ ๋ ์๋๋๋ค. ๋ฐ๋ผ์ ์ถ๊ฐํ ์ ์๋ dtype=some_workaround
์ ์ด๋ฆ์ ๋ช
ํํ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ผ๋ฐ์ ์ธ ์๊ฒฌ์ NEP 34 ์ด์ ๊ณผ ๊ฐ์ด ๋์ํ np.array(vals, dtype=special)
๋ฅผ ํ์ฉํ์ฌ ์ง์ ์ค๋จ์ (๋ฌด๊ธฐํ์ผ๋ก) ํ์ฅํ๋ ์๋ฃจ์
์ ์ค์ฌ์ผ๋ก ํตํฉ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ด special = getattr(np.special, None)
๋ฐ ํด๋น ์ฝ๋๋ ์ฌ๋ฌ ๋ฒ์ ์์ ์๋ํฉ๋๋ค.
์ด์ ์ด๋ฆ๊ณผ ๋
ธ์ถ ์์น๋ฅผ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ์๋ง๋ never_fail
๋๋ guess_dimensions
? ๊ทธ๊ฒ์ ๋
ธ์ถํ ์์น์ ๊ดํด์๋ np
๋์ ๋ค๋ฅธ ๋ด๋ถ ๋ชจ๋์ ๋งค๋ฌ์ ๋์ง ์๊ณ _
๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ๋ก ๊ฐ์ธ ์ธํฐํ์ด์ค์์ ํ์ํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค.
์์ผ๋ก ๋์๊ฐ ๊ธธ์ NEP 34๋ฅผ ์์ ํ ๋ค์ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์ ํ ๋ก ์ ๋ ธ์ถํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ฐ์ฐ์( ==
๋ฐ operator.mod
์ด์) ์ฌ์ฉ๊ณผ ๊ด๋ จ๋ ๋ช ๊ฐ์ง ๋ณด๊ณ ์๋ ์์์ต๋๋ค. ๋น์ ์ ๊ทธ๊ฒ์ ๋ฌด์ํ๊ฑฐ๋ ์ด๋ป๊ฒ๋ ๊ทธ ์ํ๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํ ๊ฒ์ ์ ์ํ๊ณ ์์ต๋๊น?
๊ฑฐ์ ๋ชจ๋ ๊ฒฝ์ฐ์ ํผ์ฐ์ฐ์ ์ค ํ๋๊ฐ numpy ๋ฐฐ์ด์ธ ๊ฒ์ผ๋ก ์๋ ค์ ธ ์์ต๋๋ค. ๋ฐ๋ผ์ ์๋์ผ๋ก numpy ๋ฐฐ์ด๋ก ๋ณํํ์ฌ ์ ์ ์๋ ๋์์ ์ป์ ์ ์์ด์ผ ํฉ๋๋ค.
๋๊ตฐ๊ฐ operator.mod
์์ ๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์์ต๋๊น?
==
์ฐ์ฐ์์ ๊ฒฝ์ฐ, ๋ด๊ฐ ๋ณธ ๊ฒ์ np.array(vals, dtype=object) == vals
vals=[1, [2, 3]]
์ ๊ฐ์ ์์
์ ์ํํ๋ ๊ฒ์ด๋ฏ๋ก ์๋ฃจ์
์ ์ฌ์ ์ ์ค๋ฅธ์ชฝ์ ๋ฐฐ์ด์ ์์ฑํ๋ ๊ฒ์
๋๋ค. ์.
๋ง์ scipy ์คํจ ๋ np.array([0.25, np.array([0.3])])
ํ์์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ์ ์ค์นผ๋ผ์ ndarray๋ฅผ shape==(1,)
์ ํผํฉํ๋ฉด ์ฐจ์ ๊ฒ์์ ์๋ฐฐ๋๊ณ ๊ฐ์ฒด ๋ฐฐ์ด์ด ์์ฑ๋ฉ๋๋ค. ์ธ๋ถ ์ฐธ์กฐ gh-15075
๋๊ตฐ๊ฐ
operator.mod
์์ ๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์์ต๋๊น?
@jbrockmendel ์ Pandas PR์์ ๋ณด์์ง๋ง ๊ทธ ์ดํ๋ก ๋ณ๊ฒฝ๋์๋ค๊ณ ์๊ฐํฉ๋๋ค(๋๊ธ์ ๋ช
์์ ์ธ operator.mod
๊ฐ ๋ ์ด์ ํ์๋์ง ์์).
==
์ฐ์ฐ์์ ๊ดํด์, ๋ด๊ฐ ๋ณธ ๊ฒ์np.array(vals, dtype=object) == vals
vals=[1, [2, 3]]
(์ฝ๋๋ฅผ ๋ฐ๊พธ์ด ๋งํจ)์ ๊ฐ์ ์ผ์ ํ๊ณ ์์๊ธฐ ๋๋ฌธ์ ํด๊ฒฐ์ฑ ์ ๋ฅ๋์ ์ผ๋ก ์ค๋ฅธ์ชฝ์ ๋ฐฐ์ด์ ์์ฑํ๋ ๊ฒ์ ๋๋ค ์.
๊ทธ ์์ ์์ np.array(vals, dtype=object) == np.array(vals, dtype=object)
๊ฐ ๋๋ฏ๋ก ํ
์คํธ๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. :)
@mattip ์ ๋ค์
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ด special = getattr(np.special, None)์ ์ํํ ์ ์๊ณ ํด๋น ์ฝ๋๊ฐ ์ฌ๋ฌ ๋ฒ์ ์์ ์๋ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด๋ณด๋ค ์ฑ๊ธํค์ ์ ํธํฉ๋๋ค.
๊ทธ๊ฒ์ ๋์๊ฒ ๊ด์ฐฎ์ ๋ค๋ฆฐ๋ค.
์ด์ ์ด๋ฆ๊ณผ ๋ ธ์ถ ์์น๋ฅผ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ์๋ง๋
never_fail
๋๋guess_dimensions
? ๋ ธ์ถ ์์น์ ๊ดํด์๋ ๋ค๋ฅธ ๋ด๋ถ ๋ชจ๋์ด ์๋ np์ ๋งค๋ฌ์ ๋์ง ์๊ณ _๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ๋ก ๊ฐ์ธ ์ธํฐํ์ด์ค์์ ๋ํ๋ ๋๋ค.
์ด์ ๋ํ ๋์ ํ์ฌ ์์
์ด๋ฆ์ legacy_auto_dtype
์ด์ง๋ง ๋ถ๋ง์ด ์๋ ๋ค๋ฅธ ์ด๋ฆ์ด ๋ง์ด ์์ ๊ฒ์
๋๋ค.
์ด๋ฆ์ ๋น๊ณต๊ฐ๋ก ์ง์ ํด์ผ ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. _private_ ๋ฐ _public_์ ์ค์ ์ ์์ ๋ฐ๋ฅด๋ฉด ์ด๊ฒ์ _public_ ๊ฐ์ฒด๊ฐ ๋ฉ๋๋ค. ๊ทธ๊ฒ์ ์๋ฅผ ๋ค์ด,์ ๊ธฐ์กด ๋์์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉ์์๊ฒ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค array(data)
๋ค์ ์์ฑํ์ฌ ๊ทธ์ ๊ฐ์ array(data, dtype=legacy_auto_dtype)
. ๋๋ ์
๋ฐ์ดํธ๋ NEP๊ฐ ์ด๊ฒ์ด ๋ ๊ฑฐ์ ๋์์ ์ ์งํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์์ ํด์ผ ํ๋ ๋ฐฉ๋ฒ(๊ทธ๋ ๊ฒ ํด์ผ ํ๋ ์ฌ๋๋ค์ ์ํด)์ ์ค๋ช
ํ ๊ฒ์ด๋ผ๊ณ ์์ํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๊ฐ์ฒด๋ ํ์คํ ๋น๊ณต๊ฐ๊ฐ ์๋๋๋ค. ์ฌ์ค NumPy์ ๋ฌด๊ธฐํ ๋จ๊ฒ ๋ ๊ณต์ฉ ๊ฐ์ฒด์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ ๋ โโNEP 34๊ฐ ์ด๋ป๊ฒ ์งํ๋ ์ง์ ๋ํ ๋์ ์ดํด๊ฐ ์๋ชป๋ ๊ฒ์ผ ์ ์์ต๋๋ค.
@WarrenWeckesser ์ ๊ณต๊ฐ/๋น๊ณต๊ฐ ์ค๋ช ์ ๋์ํ์ต๋๋ค. ๊ณต๊ฐ์ ์ด๊ฑฐ๋ NumPy ์ธ๋ถ์ ์ฌ๋์ด ์ฌ์ฉํด์๋ ์ ๋ฉ๋๋ค.
์ด๋ฆ ๋ณ๊ฒฝ: ๊ธฐ๋ฅ์ ์ค๋ช ํ๋ ์ด๋ฆ์ ์ ํํ์ญ์์ค. "๋ ๊ฑฐ์"์ ๊ฐ์ ๊ฒ์ ๊ฑฐ์ ์ข์ ์๊ฐ์ด ์๋๋๋ค.
๊ธฐ๋ฅ์ ์ค๋ช ํ๋ ์ด๋ฆ์ ์ ํํ์ญ์์ค.
auto_object
, auto_dtype
, auto
?
์ ์ ํฐ ์๋ฆฌ๋ก ์๊ฐํ๊ณ ...
์ด ๊ฐ์ฒด๋ ๋ฌด์์ ํฉ๋๊น?
ํ์ฌ, NumPy์ ๊ธธ์ด๊ฐ ์ผ๋ฐ nd ๋ฐฐ์ด๊ณผ ์ผ์นํ์ง ์๋ ํ์ ์ํ์ค๋ฅผ ํฌํจํ๋ Python ๊ฐ์ฒด๊ฐ ์ ๊ณต๋๋ฉด NumPy๋ object
๋ฐ์ดํฐ ์ ํ์ ๋ฐฐ์ด์ ์์ฑํ๋ฉฐ, ๋ชจ์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ๋ ์ฒซ ๋ฒ์งธ ์์ค์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํ์ด์ฌ ๊ฐ์ฒด๋ก ๋จ์ต๋๋ค. ์๋ฅผ ๋ค์ด array([[1, 2], [1, 2, 3]])
๋ชจ์์ (2,)
์ด๊ณ np.array([[1, 2], [3, [99]]])
๋ชจ์์ (2, 2)
. NEP 34์์๋ ํด๋น ๋์์ ๋ ์ด์ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก "๋น์ ํ" ์
๋ ฅ์ด ์๋ ๋ฐฐ์ด์ ๋ช
์์ ์ผ๋ก ํ์ฑํ๋์ง ์๋ ํ ๊ฒฐ๊ตญ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ด์ผ๊ธฐํ๊ณ ์๋ ํน๋ณํ ๊ฐ์ ์ด์ ๋์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๊ทธ๊ฒ์ ๋ํ ์ข์ ์ด๋ฆ์ ๋ฌด์์
๋๊น? ragged_as_object
? inconsistent_shapes_as_object
?
๊ทธ ์์ ์์
np.array(vals, dtype=object) == np.array(vals, dtype=object)
๊ฐ ๋๋ฏ๋ก ํ ์คํธ๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. :)
๊ธ์, ๋๋ ์์ญํ๊ณ ์์๋ค. ์ค์ ํ
์คํธ๋ my_func(vals) == vals
๊ฐ my_func(vals) == np.array(vals, dtype=object)
๋๋ dtype์ ๋ํ ํน๋ณํ ๊ฐ์ ํ์ฉํ๊ธฐ ์ํด NEP 34์ ๋ํ ํ์ฅ์ ์ ์ํ ๊ฒ์ ๋๋ค.
scipy๋ scipy/scipy#11310 ๋ฐ scipy/scipy#11308 ํ ์คํธ๋ฅผ ํต๊ณผํ๊ธฐ ์ํด ์ด ์ผํฐ๋ฌ์ด ํ์ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
gh-15119๊ฐ ๋ณํฉ๋์ด NEP๋ฅผ ๋ค์ ๊ตฌํํ์ต๋๋ค. ๋๋๋ฆฌ์ง ์์ผ๋ฉด ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ ์ ์์ต๋๋ค.
1.19 ๋ฆด๋ฆฌ์ค ์ด์ ์ ํ์ ์กฐ์น๋ฅผ ์ทจํ์ง ์์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ซ๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ด๋ ๊ทธ ์ด์ ๋ ๋ชจ๋ ์ฃผ์ ํ๋ก์ ํธ์์ ์์ฑ๋ ๋ฌธ์ ์ ๋ํ ํฉ๋ฆฌ์ ์ธ ํด๊ฒฐ์ฑ
์ ์ฐพ์ ์ ์์๊ธฐ ๋๋ฌธ์ ๋
ผ์๊ฐ ์ค๋จ๋์๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ด๊ฐ ํ๋ ธ๋ค๋ฉด, ํนํ ์ด๊ฒ์ด ์ฌ์ ํ pandas, matplotlib ๋ฑ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ด ๊ฒฝ์ฐ ์์ ํด ์ฃผ์ธ์. ํ์ง๋ง 1.19.x ๋ฆด๋ฆฌ์ค ํ๋ณด ์ฃผ๊ธฐ ๋์ ๋ค์์ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๊ตฐ๊ฐ
operator.mod
์์ ๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์์ต๋๊น?==
์ฐ์ฐ์์ ๊ฒฝ์ฐ, ๋ด๊ฐ ๋ณธ ๊ฒ์np.array(vals, dtype=object) == vals
vals=[1, [2, 3]]
์ ๊ฐ์ ์์ ์ ์ํํ๋ ๊ฒ์ด๋ฏ๋ก ์๋ฃจ์ ์ ์ฌ์ ์ ์ค๋ฅธ์ชฝ์ ๋ฐฐ์ด์ ์์ฑํ๋ ๊ฒ์ ๋๋ค. ์.๋ง์ scipy ์คํจ ๋
np.array([0.25, np.array([0.3])])
ํ์์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ์ ์ค์นผ๋ผ์ ndarray๋ฅผshape==(1,)
์ ํผํฉํ๋ฉด ์ฐจ์ ๊ฒ์์ ์๋ฐฐ๋๊ณ ๊ฐ์ฒด ๋ฐฐ์ด์ด ์์ฑ๋ฉ๋๋ค. ์ธ๋ถ ์ฐธ์กฐ gh-15075