Numpy: ๊ฐ์ฒด ๋ฐฐ์—ด์˜ "์ œ์–ด๋œ" ์ƒ์„ฑ

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

๊ฐ์ฒด ๋ฐฐ์—ด์˜ ์ž๋™ ์ƒ์„ฑ์€ ์ตœ๊ทผ 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์€ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?"๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Numpy/Python ๋ฒ„์ „ ์ •๋ณด:


1.19.0.dev0+bd1adc3 3.8.0 (๊ธฐ๋ณธ๊ฐ’, 2019๋…„ 11์›” 6์ผ, 21:49:08)
[GCC 7.3.0]

57 - Close?

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

๋ˆ„๊ตฐ๊ฐ€ 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

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

ํ•˜๋‚˜์˜ ์˜ต์…˜์€
```ํŒŒ์ด์ฌ
๋…ธ๋ ฅํ•˜๋‹ค:
# ๊ฒŒ์ž„๋ณด๋‹ค ์•ž์„œ์„œ ์‚ฌ์šฉ ์ค‘๋‹จ์„ ๋Œ€์ฒดํ•  ์˜ค๋ฅ˜๋กœ ์Šน๊ฒฉํ•ฉ๋‹ˆ๋‹ค.
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

์ด์ œ ์ˆ˜๋ฐฑ ๋ฒˆ์˜ ํ…Œ์ŠคํŠธ ์‹คํŒจ์— ๋Œ€ํ•ด ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ์•„๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‰ฌ์šด ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • pytest ๊ตฌ์„ฑ์—์„œ ๊ฒฝ๊ณ  ํ‘œ์‹œ ์•ˆ ํ•จ
  • ๋ฌธ์ œ๋ฅผ ์—ด์–ด ๋‚˜์ค‘์— ์ˆ˜์ •ํ•˜์„ธ์š”.

์‚ฌ์šฉํ•˜์—ฌ ์šฐ๋ฆฌ์˜ ์š”์  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)
  • if `new_ndarray.dtype.kind == 'O': ์ด๊ฒƒ์„ ์ฒ˜๋ฆฌ
  • ๊ธฐํƒ€: 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๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ์•Œ์•„๋‚ด๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ง€์ ํ–ˆ๋“ฏ์ด ํ˜„์žฌ ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. object ๋ฐ "allow ragged" ํ˜ผ๋™. ๊ฐ์ฒด์— ํ•ฉ๋ฆฌ์ ์ธ ์œ ํ˜•์ด ์žˆ๋Š” ๊ฒฝ์šฐ(์˜ˆ Decimal ) ์‹ค์ œ๋กœ ๊ฒฝ๊ณ /์˜ค๋ฅ˜๋ฅผ ๋ฐ›๊ณ  ์‹ถ์ง€๋งŒ dtype=object ์ „๋‹ฌํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ƒˆ๋กœ์šด ๋™์ž‘์„ ์„ ํƒ ํ•˜๊ฑฐ๋‚˜ ์ด์ „ ๋™์ž‘์„ ๊ณ„์† ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค(๊ฒฝ๊ณ  ์—†์ด). ๋‚ด๋ถ€ ์‚ฌ์šฉ์—๋Š” ์ตœ์†Œํ•œ ์˜ตํŠธ์ธ์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ (๊ฐ„์ ‘์ ์œผ๋กœ) ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์— ์ง๋ฉดํ•˜๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž๋งŒ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๊นŒ?

๋งˆ์ง€๋ง‰์œผ๋กœ, ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์šฐ๋ฆฌ์˜ ์ฝ”๋“œ์— ์ง‘์–ด๋„ฃ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. :). 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 ๋ฆด๋ฆฌ์Šค ํ›„๋ณด ์ฃผ๊ธฐ ๋™์•ˆ ๋“ค์—ˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

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