Π€ΡΠ½ΠΊΡΠΈΠΈ numpy.array ΠΈ numpy.asarray ΠΈΠΌΠ΅ΡΡ ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊ ΡΠΏΠΈΡΠΊΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²: Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ, ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° (Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ " ΡΠ΅ΠΆΠΈΠΌ 1 "). ΠΡΠ»ΠΈ Π½Π΅Ρ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² (Β«ΡΠ΅ΠΆΠΈΠΌ 2Β»).
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ numpy.array ΠΈ numpy.asarray Π² Β«ΡΠ΅ΠΆΠΈΠΌΠ΅ 2Β», ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡ, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π°Ρ . Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ»Π΅Π³Π°Π½ΡΠ΅Π½ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΠΈ 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=object
Π΅ΡΠ»ΠΈ ΡΠ²Π½ΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ dtype. 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='structured'
, ΠΊΠΎΡΠΎΡΡΠΉ Π±Ρ ΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ±Π»ΡΠ΄Π°Π» ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΌΠΈ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΠΊΠ°ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ dtype.
Π― Π³ΠΎΡΠΎΠ² Π²Π½Π΅ΡΡΠΈ ΡΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΡΠ»Π°ΡΡ ΠΌΠ½Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠΉ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ. Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²Π·Π³Π»ΡΠ½ΡΠ» Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π² 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
Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ - Π²Ρ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΡ.ΠΠ΄Π½Π°ΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΠ³ΠΎ: