numpy.array ๋ฐ numpy.asarray ํจ์๋ ๋ฐฐ์ด ๋ชฉ๋ก์ ์ ์ฉ๋ ๋ ์ ์ ์ ๋ ๋์์ ๊ฐ์ต๋๋ค. ๋์ด๋ ๋ฐฐ์ด์ ํฌ๊ธฐ์ ํฌ๊ธฐ๊ฐ ๊ฐ์ผ๋ฉด ๋ชฉ๋ก์ด ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ์ฐจ์ ์ค ํ๋๋ก ๋ฐ๋๋๋ค ( " ๋ชจ๋ 1 "). ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๋ฐฐ์ด ๋ฐฐ์ด์ด ๋ฐํ๋ฉ๋๋ค ( "๋ชจ๋ 2").
๊ทธ๋ฌ๋ "๋ชจ๋ 2"์์ numpy.array ๋ฐ numpy.asarray์ ๋์์ ๋ฐฐ์ด์ ํญ๋ชฉ ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๋ค์ ์ฝ๋๋ numpy ์ ์ฉ์ฑ์ ๋นํด ๋งค์ฐ ์ฐ์ํ์ง๋ ์์ง๋ง ์๋ํฉ๋๋ค.
>>> a = np.array([1, 2, 3])
>>> b = np.array([[1, 0], [0, 1]])
>>> np.asarray([a, b])
array([array([1, 2, 3]), array([[1, 0],
[0, 1]])], dtype=object)
๊ทธ๋ฌ๋ ๋ค์์ ๊ทธ๋ ์ง ์์ต๋๋ค.
>>> a = np.array([1, 2])
>>> b = np.array([[1, 0], [0, 1]])
>>> np.asarray([a, b])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.4/dist-packages/numpy/core/numeric.py", line 474, in asarray
return array(a, dtype, copy=False, order=order)
ValueError: could not broadcast input array from shape (2,2) into shape (2)
๋ถ๋ช
ํ ๋ฌธ์ ๋ numpy.asarray๊ฐ ์ฒซ ๋ฒ์งธ ์ฐจ์์ด a
๋ฐ b
์์ ๋์ผํ ๊ธธ์ด๋ฅผ ๊ฐ๋ ๊ฒ์ ํ์ธํ๋ฉด ์ฌ๊ธฐ์๋ ๋ถ๊ฐ๋ฅํ "๋ชจ๋ 1"๋ก ์ด๋ํ๋ ค๊ณ ํ๋ค๋ ๊ฒ์
๋๋ค.
ํธ์ง : numpy 1.10.4 ๋ฐ python 3.4.3์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋์ํฉ๋๋ค. ์ด๋ฐ ์ข
๋ฅ์ ํด๋ฐฑ ๋ก์ง์ ๋ถํํฉ๋๋ค. dtype์ด ๋ช
์ ์ ์ผ๋ก ์ ๊ณต๋์ง ์๋ ํ dtype=object
๋ฐฐ์ด์ ๋ง๋ค์ง ์๋ ๊ฒ์ ๋ํด ๋
ผ์ํ์ต๋๋ค. IMO np.array([a, b], dtype=object)
๋ ์ด๋ค ์ค ํ๋๋ฅผ ์์ฑํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด์ด์ผํ๋ฉฐ ๋ชจ์์ ๋ํ ๊ฒ์ฌ๋ฅผ ์ํ ํ ํ์๊ฐ ์์ต๋๋ค.
dtype=object
์ ๊ณตํด๋ ๋์์ด๋์ง ์์ต๋๋ค. ์ฌ์ ํ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋น ๋ฐฐ์ด์ ์ถ๊ฐํ๋ฉด์ด๋ฅผ ๋ฐฉ์ง ํ ์ ์์ต๋๋ค.
arr_of_arr = np.array([np.array([]), a, b])[1:]
1.14.4์ ์ฌ์ ํ ์กด์ฌ
@ppwwyyxx- ์ฌ์ค, ๋ถ๋ถ์ ์ผ๋ก๋ ์ฌ์ํ ๋ณํ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ถ๋ถ์ ์ผ๋ก๋ ํญ์ ํ๊ฒฉ์ ์ ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๊ธด๊ธ ์ฑ์ด ์๋์ ์ผ๋ก ๋ฎ์ต๋๋ค (๊ทธ๋ฆฌ๊ณ ๊ธฐ์ฌํ ์๊ฐ์ด ๋ง์ ์ฌ๋๋ค์ด ์์ต๋๋ค ...).
๊ทธ๋ฌ๋ ์ฌ๊ธฐ์ ๋์์ด ๋ ์์๋ ๊ฒ์ ์ํ๋ ๋์์ด ์ ํํ ๋ฌด์์ธ์ง ๋ช
ํํ๊ฒํ๋ ๊ฒ์
๋๋ค. @shoyer ๋ ์ค์ ๋ก ์ํ ๊ฒฝ์ฐ dtype=object
๋ฅผ ๋ช
์ ์ ์ผ๋ก ์๊ตฌํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ซ์ ๋๋ ๋ฌธ์์ด ๋ฐฐ์ด๋ก ๊ตฌ๋ฌธ ๋ถ์ ํ ์์๋ ๋ชจ๋ ํญ๋ชฉ์ ๋ํด TypeError
๋ฅผ ์ฌ๋ฆฌ๋ผ๋ ์ค๋ ์์ฒญ๋ ์ธ๊ธํ์ต๋๋ค (# 5353). ๋๋ ์ต๊ทผ์ ๋ฐฐ์ด์ ์์๋ฅผ ๋ํ๋ด๋ ๋ชฉ๋ก๊ณผ ๊ตฌ์กฐํ ๋ dtype์ ์์๋ก ํํ ๊ฐ์ ์ฐจ์ด๋ฅผ ์๊ฒฉํ๊ฒ ์ ์ฉํ๋ dtype='structured'
๋ฅผ ์ ์ฌํ๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์ฉํ ์ง ๊ณ ๋ฏผํด ์์ต๋๋ค.
๋๊ตฌ๋ ์ง ์ ์๊ฒ ๋ฌด์์ํด์ผํ๋์ง์ ๋ํ ์กฐ์ธ์ ๋ณด๋ผ ์ ์๋ค๋ฉด ๊ธฐ๊บผ์ด ๊ธฐ์ฌํ ๊ฒ์ ๋๋ค. ๋ฐฉ๊ธ ctors.c์ ๊ด๋ จ ์ฝ๋๋ฅผ ์ดํด ๋ณด์๋๋ฐ, ์์ฑ์ ๋ ผ๋ฆฌ๋ ๋ค์ํ ํํ์ ์ ๋ ฅ์ ์ฒ๋ฆฌํด์ผํ๋ฏ๋ก ์๋นํ ๋ณต์กํด ๋ณด์ ๋๋ค.
๊ฐ์ ํธ : # 8330
๋๋ ์ด๊ฒ์ด # 11601์ ์ํด ๊ณ ์ณ์ง ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํธ์ง : ๊ทธ๋ ์ง ์์ต๋๋ค.
๊ทธ๋์ ์ฌ๊ธฐ์ ์ผ์ด๋๋ ์ผ์ ๋๋ต ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
a = np.array([1, 2])
b = np.array([[1, 0], [0, 1]])
out = np.asarray([a, b])
# translates to
out = np.empty((2, 2)) #shape is correctly inferred
out[0,:] = a
out[1,:] = b # error comes from here
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
dtype=object
์ ๊ณตํด๋ ๋์์ด๋์ง ์์ต๋๋ค. ์ฌ์ ํ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.๊ทธ๋ฌ๋ ๋น ๋ฐฐ์ด์ ์ถ๊ฐํ๋ฉด์ด๋ฅผ ๋ฐฉ์ง ํ ์ ์์ต๋๋ค.