๋ฌธ์ #5303์์ ๋ ผ์๋ ๋ฐ์ ๊ฐ์ด, ์ํ์ค๋ ์๋์ผ๋ก ๋ฐฐ์ด ์์๋ก ์ฝํ์ง๊ธฐ ๋๋ฌธ์ ๋์ผํ ๊ธธ์ด์ ์ํ์ค๋ฅผ ํฌํจํ๋ ๊ฐ์ฒด dtype์ ๋ฐฐ์ด์ ์์ฑํ๋ ๊ฒ์ ํ์ฌ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๋ชฉ๋ก์ ๋ํด์๋ง ์ด ์์ ์ ์ํํ๋ผ๋ ์ ์์ด ์์ง๋ง ์ด๋ ์ฃผ์ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ ์ค๋จ์ด ๋๊ณ ๊ธด ์ฌ์ฉ ์ค๋จ ๊ธฐ๊ฐ์ด ํ์ํฉ๋๋ค.
๋ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ๊ฐ์ฒด dtype์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ์์ฑํ๊ธฐ ์ํ ํจ์๋ฅผ ๋ช ์์ ์ผ๋ก ๊ฐ๋ ๊ฒ์ ๋๋ค. ์๋ง๋ ์ด๊ฒ์ "๊ฐ์ฒด ๋ฐฐ์ด"์ด๋ผ๊ณ ๋ถ๋ฅผ ์ ์์ต๋๋ค. ์ด ํจ์์ ๊ธฐ๋ณธ๊ฐ์ ์ํ์ค๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ํ์ค์ ๊ฐ ์์๋ฅผ 1D ๊ฐ์ฒด ๋ฐฐ์ด์ ์์๋ก ๊ฐ์ฃผํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ํจ์์๋ ๋ฐฐ์ด์ ์ผ๋ถ๋ก ๊ฐ์ฃผ๋์ด์ผ ํ๋ ์ํ์ค ์์ค์ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ ํ์ "ndim" ๋๋ "๊น์ด" ์ธ์๊ฐ ์์ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 0์ ๋๋ค(๊ฐ์ฅ ๋ฐ๊นฅ์ชฝ ์์ค๋ง ๊ณ ๋ ค๋จ). ์น์๊ฐ ์ผ์นํ์ง ์์ผ๋ฉด ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ๋์๊ณผ ์ํธ ๋ฐฐํ์ ์ด์ง ์์ง๋ง ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์์์ํค์ง ์๋๋ค๋ ์ด์ ์ด ์์ต๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
>>> arr = objectarray([((1, 2, 3), (4, 5, 6)), ((7, 8, 9), (10, 11, 12))])
>>> arr
array([((1, 2, 3), (4, 5, 6)), ((7, 8, 9), (10, 11, 12))], dtype=object)
>>> arr.shape
(2,)
>>> arr = objectarray([((1, 2, 3), (4, 5, 6)), ((7, 8, 9), (10, 11, 12))], depth=1)
>>> arr
array([[(1, 2, 3), (4, 5, 6)],
[(7, 8, 9), (10, 11, 12)]], dtype=object)
>>> arr.shape
(2, 2)
>>> arr = objectarray([((1, 2, 3), (4, 5, 6)), ((7, 8, 9), (10, 11, 12))], depth=2)
>>> arr
array([[[1, 2, 3],
[4, 5, 6]],
[[7, 8, 9],
[10, 11, 12]]], dtype=object)
>>> arr.shape
(2, 2, 3)
๋์ผํ ํฌ๊ธฐ์ ๋ชฉ๋ก์ ๊ฐ์ฒด ๋ฐฐ์ด๋ก ๊ฐ์ ธ์ค๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
>>> a = empty((2,), dtype=np.object)
>>> a[:] = [[1,2,3],[4,5,6]]
>>> b = empty((2,3), dtype=np.object)
>>> b[:] = [[1,2,3],[4,5,6]]
objectarray
์ ๊ตฌํ์ ๋ค์๊ณผ ๊ฐ์ด ์๋ํ ๊ฒ์
๋๋ค.
์, ํ์ฌ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ด์ง๋ง ๋ถํ์ํ๊ฒ ์ฅํฉํฉ๋๋ค. ๋ฐ๋ผ์์ด ์์ด๋์ด.
์ด ์์ด๋์ด๋ฅผ ๊ตฌํํ๋ฉด array
ํจ์์์ ์ฌ์ฉ๋๋ ์๋ ๋ณํ์ ๋ฌด์ํ๊ณ ์์ฒด์ ์ผ๋ก ndarray
์์ฑ์๋ฅผ ๋์ฒดํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋๋ฝ๋ ๊ฒ์ด ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ํ์ง๋ง ndmax
์ธ์๋ ๋ณด๊ณ ๋ ๋ฌธ์ ("_๊ฐ์ ๊ธธ์ด์ ์ํ์ค๋ฅผ ํฌํจํ๋ ๊ฐ์ฒด dtype์ ๋ฐฐ์ด ์์ฑ_")๋ฅผ ํด๊ฒฐํ ๋ฟ๋ง ์๋๋ผ ์๋ฅผ ๋ค์ด ์
๋ ฅ์ ๋ง์ง๋ง ๊ฐ์ฒด๊ฐ ๋ชฉ๋ก์ด ์๋ ๊ฒฝ์ฐ(๋๋ ๊ธธ์ด๊ฐ ๋ค๋ฅธ ๋ชฉ๋ก์ธ ๊ฒฝ์ฐ). ๋ํ ์ด ์ง๋ฌธ ์ ์ฐธ์กฐํ์ญ์์ค.
ndmax
๊ตฌํ์ ๋ํ ์งํ ์ํฉ์ด๋ ๊ณํ์ด ์์ต๋๊น? ๋ด๊ฐ ์ง๊ธ ํ๊ณ ์๋ ์ผ:
np.array([*data, None])[:-1]
# This would look a lot cleaner:
np.array(data, ndmax=1)
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ฝ๋ ๊ฒ์ด ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ํ์ง๋ง
ndmax
์ธ์๋ ๋ณด๊ณ ๋ ๋ฌธ์ ("_๊ฐ์ ๊ธธ์ด์ ์ํ์ค๋ฅผ ํฌํจํ๋ ๊ฐ์ฒด dtype์ ๋ฐฐ์ด ์์ฑ_")๋ฅผ ํด๊ฒฐํ ๋ฟ๋ง ์๋๋ผ ์๋ฅผ ๋ค์ด ์ ๋ ฅ์ ๋ง์ง๋ง ๊ฐ์ฒด๊ฐ ๋ชฉ๋ก์ด ์๋ ๊ฒฝ์ฐ(๋๋ ๊ธธ์ด๊ฐ ๋ค๋ฅธ ๋ชฉ๋ก์ธ ๊ฒฝ์ฐ). ๋ํ ์ด ์ง๋ฌธ ์ ์ฐธ์กฐํ์ญ์์ค.