Numpy: рдмрдЧ: рд╕реНрдХреЗрд▓рд░ рдФрд░ рдЖрдХреГрддрд┐ == (1,) рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдорд┐рд▓рд╛рддреЗ рд╕рдордп рдЖрдпрд╛рдо рдХреА рдЦреЛрдЬ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рджрд┐рд╕ре░ 2019  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: numpy/numpy

np.array([0.25, np.array([0.3])]) рдлреНрд▓реЛрдЯ рдРрд░реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛрдВрдЧреЗ, dtype рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдЧрд╛ред

рдпрд╣ рдореБрдЭреЗ рдЧрд▓рдд рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╣реИ?

00 - Bug numpy.dtype

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Cc @nschloe , рдЬреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЪреАрдЬрд╝ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдореБрджреНрджреЗ рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ

CCing рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рд╛рдБ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рд╣реИред : рд╕реНрдорд╛рдЗрд▓реА_рдХреИрдЯ: https://github.com/numpy/numpy/issues/10404

рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдРрд░реЗ рдмрдирд╛рдирд╛ рдпрд╣рд╛рдВ рд╕рд╣реА рдмрд╛рдд рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдЖрдк рдПрдХ рдлреНрд▓реЛрдЯ рдФрд░ рдПрдХ рд╕рд░рдгреА рдбрд╛рд▓ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╛рдпрдерди рд╕реВрдЪреА рдмрдирд╛рдИ рд╣реИ,

[0.25, np.array([0.3])]

рдЖрдк рдПрдХ рд╣реА рдмрд╛рдд рдХреА рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗ: рдкрд╣рд▓реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдПрдХ рдлреНрд▓реЛрдЯ рд╣реИ, рджреВрд╕рд░реА рд▓рдВрдмрд╛рдИ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИред рдпрд╣ рднреНрд░рд╛рдордХ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╕реВрдЪреА рдФрд░ np.arrays рдпрд╣рд╛рдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рдПрдХ dtype рдлрд╝реНрд▓реЛрдЯ рдРрд░реЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдХрднреА рднреА [float, vector[1]] рдРрд░реЗ рдХреЛ рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛ рджреЗрддрд╛, рднрд▓реЗ рд╣реА рдореИрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп, np.array([0.25, np.array([0.3])]) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реБрдП рдЧрд▓рддреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рджреЗрдЦреЗрдВ, рдЬреИрд╕реЗ, https://github.com/scipy/scipy/pull/11147/files#diff -21a6a0b0d89357857304bfba2da5a971L321ред рдЖрдЦрд╝рд┐рд░рдХрд╛рд░,

рдирд┐рд╣рд┐рддрд╛рд░реНрде рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реИред

рдареАрдХ рд╣реИ, рд╕рдорд╛рдкрдиред рдЙрд╕ рдкреАрдЖрд░ рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдирдИрдкреА 34 рдмрджрд▓рд╛рд╡ рдХрд┐рдП рд╣реИрдВ (рдЙрд▓реНрдЯреЗ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж) рдХрдо рдЪреАрд░-рдлрд╛рдбрд╝ рдХреЗ рд▓рд┐рдП рд╡рд┐рдШрдЯрдирдХрд╛рд░реАред

@nschloe

рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рдПрдХ dtype рдлреНрд▓реЛрдЯ рдРрд░реЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдХрднреА рднреА [рдлреНрд▓реЛрдЯ, рд╡реЗрдХреНрдЯрд░ [1]] рдПрд░реЗ рдХреЛ рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛ рджреЗрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред

рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдЖрдк np.array(0.3, np.array([0.3]), dtype=object) ред

рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╛рдпрдерди рд╕реВрдЪреА рдмрдирд╛рдИ ...

NumPy ndarrays рдЕрдЬрдЧрд░ рд╕реВрдЪрд┐рдпреЛрдВ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИрдВред рдореБрдЭреЗ рдЗрд╕рдХреА рдХреЛрдИ рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реЛрдЧреА
np.array([0.2, 0.3, 0.4]) рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрд░реЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛, рдЬрдмрдХрд┐ рдореИрдВрдиреЗ dtype рдХреЗ рд▓рд┐рдП np.float64 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд, рдореВрд▓реНрдп-рдЖрдзрд╛рд░рд┐рдд dtype рдЦреЛрдЬ рдХреЗ рдХреБрдЫ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рд╕рд╣рдЬ рд╣реИрдВред рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдкреВрд░реНрд╡рд╡рд░реНрддреА: рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ рдпрд╛ рд╡рд╕реНрддреБ рдкреНрд░рдХрд╛рд░ред

рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд, рдореВрд▓реНрдп-рдЖрдзрд╛рд░рд┐рдд dtype рдЦреЛрдЬ рдХреЗ рдХреБрдЫ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рд╕рд╣рдЬ рд╣реИрдВред

"рд╕реНрд╡рдЪрд╛рд▓рди" рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИ: рд╣рдореЗрд╢рд╛ "рд╕рдмрд╕реЗ рдХрдо" рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬреЛ рд╕рднреА рдЗрдирдкреБрдЯ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

numpy.array([1, 2]).dtype   # int64
numpy.array([1, numpy.array(2)]).dtype  # int64, array of rank 0 are basically scalars
numpy.array([1.0, 2]).dtype   # float64
numpy.array([1, [2]]).dtype   # O
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕