Numpy: np.left_shift рдФрд░ np.right_shift np.uint64 рд╕реНрдХреЗрд▓рд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рдлрд▓ рд░рд╣реЗрдВ (Trac # 1931)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдЕрдХреНрддреВре░ 2012  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: numpy/numpy

_рдСрд░рд┐рдЬрд┐рдирд▓ рдЯрд┐рдХрдЯ http://projects.scipy.org/numpy/ticket/1931 2011-08-10 рдХреЛ trac user tlatorre рджреНрд╡рд╛рд░рд╛, рдЕрдЬреНрдЮрд╛рдд рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ ред_

>>> np.uint64(5) << 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: ufunc 'left_shift' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule 'safe'
>>> np.uint64(5) >> 3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: ufunc 'right_shift' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule 'safe'
00 - Bug numpy.core

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрд╕рд╛рди рдХрд╛рдо-рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╢рд┐рдлреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:

np.uint64(5) << np.uint64(1)

рдЬреИрд╕рд╛ рдХрд┐ @charris рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ dtypes рдХреЛ рдПрдХ рд╕рдорд╛рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИ (# 5668 рднреА рджреЗрдЦреЗрдВ), рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢рд╛рдпрдж рд╢рд┐рдлреНрдЯ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреИрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред (рдкреАрдЖрд░ рд╕реНрд╡рд╛рдЧрдд, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╖реНрдкрдХреНрд╖ рд╕рдордЭ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ ufucs рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдЫреЛрд░реЛрдВ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ...)

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

_ @ рдЪрд░рд┐рд╕ рдиреЗ 2011-08-13_ рдкрд░ рд▓рд┐рдЦрд╛

рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╢рд┐рдлреНрдЯ рдирдВрдмрд░ рдХреЛ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдпреВрдЗрдВрдЯ64 рдХреЛ рдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛред рд╢рд┐рдлреНрдЯ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд░рдг рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╡реЗ рдЗрдВрдЯреЗрд▓ рдкрд░ рднреА рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмрд┐рдЯреНрд╕ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЗрдВрдЯ 32 рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдирд┐рдЪрд▓реЗ 5 рдмрд┐рдЯреНрд╕ рдХреЛ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

_trac рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ parejkoj рдиреЗ 2012-07-27_ рдкрд░ рд▓рд┐рдЦрд╛

рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХреЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛:

lshift = lambda x,s: np.uint64(x)*np.uint64(2**s)

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рд╕реБрдиреНрди рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдпрд╣ рдкрд╛рдВрдЪ рд╕рд╛рд▓ рдмрд╛рдж рд╣реИ ... рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ? рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЖрд╕рд╛рди рдХрд╛рдо-рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╢рд┐рдлреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:

np.uint64(5) << np.uint64(1)

рдЬреИрд╕рд╛ рдХрд┐ @charris рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ dtypes рдХреЛ рдПрдХ рд╕рдорд╛рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИ (# 5668 рднреА рджреЗрдЦреЗрдВ), рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢рд╛рдпрдж рд╢рд┐рдлреНрдЯ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреИрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред (рдкреАрдЖрд░ рд╕реНрд╡рд╛рдЧрдд, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╖реНрдкрдХреНрд╖ рд╕рдордЭ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ ufucs рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдЫреЛрд░реЛрдВ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ...)

рдЖрд╕рд╛рди рдХрд╛рдо-рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╢рд┐рдлреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:

np.uint64 (5) << np.uint64 (1)

... рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреВрд░реНрдгрд╛рдВрдХ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдРрд╕рд╛ рдХреБрдЫ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреВрд╕рд░реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ)

def f(x):
    return x | (x >> 1)

рддрдм рдЖрдк рдЗрд╕реЗ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдкрд╛рдпрдерди рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдФрд░ np.uint64 рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдореИрдВ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рддреБрдЪреНрдЫ (рдореЗрд░реЗ рдХреМрд╢рд▓ рд╕реЗ рдКрдкрд░ рдХрд╛ рд░рд╛рд╕реНрддрд╛) рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

@ jason-s - рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдБ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ ... рдЕрдлрд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рд╡рд╣рд╛рдБ рд╣рдо рдореЗрдВ рд╕реЗ рдХрдИ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ ufuncs рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ ...

рд╢рд╛рдпрдж рд╡рд┐рдзрд┐ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рд╡рд┐рд╢реЗрд╖-рдорд╛рдорд▓реЗ рд╡рд╛рд▓реЗ рд╕реНрдХреЗрд▓рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд╛рдорд╛рдиреНрдп ufunc рдорд╢реАрдирд░реА рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдпред @charris : рдпрд╣ рдЖрдкрдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдерд╛ (рдпрджрд┐ рдЖрдк рдпрд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ 6 рд╕рд╛рд▓ рдХреЗ рдмрд╛рдж ;-)

# 8002 рднреА рджреЗрдЦреЗрдВред

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдЕрдЧрд░ рд╣рдо рдлрд┐рд░ рд╕реЗ рд╕рдм рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рд╕рднреА рдХрд╛рд╕реНрдЯрд┐рдВрдЧ / рдЬрд╝рдмрд░рджрд╕реНрддреА рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдкрдХреНрд╖ рд▓реВрдВрдЧрд╛, рддрд╛рдХрд┐ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕реА рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗ, рдФрд░ рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реА-рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХреА рднрд╛рд╡рдирд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдЬреЛ рд╕реА рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВред рдирд┐рдпрдо рдереЛрдбрд╝реЗ рдЕрдЬреАрдм рдФрд░ рдХрднреА-рдХрднреА рднреНрд░рд╛рдордХ рд╣реЛрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ uint64 + int64 рд╕реЗ float64 рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг)ред рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдЗрд╕ рд╕реВрдЪреА рдкрд░ рдмрд╣реБрдд рдЪрд░реНрдЪрд╛ рдХреА рд╣реИ, рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдХрдард┐рди рд╣реИред

рдЬрдм рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЖрддрд╛ рд╣реВрдВ (рд╡рд╣рд╛рдВ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ) рдореИрдВ рд╕рд┐рд░реНрдл np.uint64 рдореЗрдВ рд╣рд░ рдПрдХ рдореВрд▓реНрдп рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕