рдореИрдВ Gizeh рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рдореБрдЭреЗ Numpy рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдкрд░ рдЙрдкрд░реЛрдХреНрдд рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред Numpy рд╕рдВрд╕реНрдХрд░рдг 1.08 рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдереАред
File "animation/target_animation.py", line 161, in draw
fill = gizeh.ImagePattern(self.bg.data, self.bg.pos, filter='best')
File "build/bdist.linux-x86_64/egg/gizeh/gizeh.py", line 295, in __init__
File "build/bdist.linux-x86_64/egg/gizeh/gizeh.py", line 50, in from_image
TypeError: Cannot cast ufunc add output from dtype('float64') to dtype('uint8') with casting rule 'same_kind'
рдХреНрдпрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ рдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░реЗрдВрдЧреЗ?
рдЖрдкрдХреЛ np.add
ufunc рдореЗрдВ casting
рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред Gizeh рдЬрд┐рд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЙрд╕реЗ 1.7 рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╡рд╣ рд╣реИ casting='unsafe'
ред
рдореБрдЭреЗ рдпрд╣ @charris рдХрд╣рд╛рдБ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдЖрдо рддреМрд░ рдкрд░ рдпрд╣ a += b
рдЬреИрд╕рд╛ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ np.add(a, b, out=a, casting="unsafe")
рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдпрджрд┐ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдЖрдк рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд╕реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╛, рдЬрдм рддрдХ рдХрд┐ рдмреА рдмрдбрд╝рд╛ рди рд╣реЛ рдФрд░ рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛ, рддреЛ рд╢рд╛рдпрдж рдмрд╕ рдХрд╛рд╕реНрдЯ рдХрд░реЗрдВ рдмреА рдкрд╣рд▓реЗред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ gizeh/moviepy рдореЗрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рдореБрджреНрджрд╛ рдерд╛ред рдЗрд╕реЗ рд╕реЗрдмрд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЕрдиреБрд╕рд╛рд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рд▓рд╛рдЗрди 40 рдХреЛ gizeh.py рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛:
arr += image.flatten()
рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде:
arr = np.add(arr, image.flatten(), out=arr, casting="unsafe")
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдФрд░ рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдереА рдЬрдм _subtracting_ рдЗрд╕ рддрд░рд╣:
yn -= self.y_mean
рдореЗрд░реА рддреНрд░реБрдЯрд┐ рджреВрд░ рд╣реЛ рдЧрдИ рдЬрдм рдореИрдВрдиреЗ рдШрдЯрд╛рд╡ рдХреЛ numpy.subtract рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
yn = np.subtract(yn, self.y_mean, out=yn, casting="unsafe")
рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @seberg : +1:
@ FilipSavic95 : yn -= self.y_mean.astype(yn.dtype)
рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИ
@ рдПрд░рд┐рдХ-рд╡рд╛рдЗрд╕рд░ рд╣рд╛рдБ, рдореИрдВрдиреЗ рдЕрднреА рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред :+1:
рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдСрдкрд░реЗрд╢рди рдХреЛ рдмрдбрд╝реЗ (рдЖрд░рдПрдЪрдПрд╕) рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ (рдпрд╛ рд╕рдВрдпреБрдХреНрдд рд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рдХрд╛рд░) рдореЗрдВ рдХрд░реЗрдЧрд╛, рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдХрд╛рд╕реНрдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрдо рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХрд░реЗрдЧрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЖрдо рддреМрд░ рдкрд░ рдпрд╣
a += b
рдЬреИрд╕рд╛ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗnp.add(a, b, out=a, casting="unsafe")
рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдпрджрд┐ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдЖрдк рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд╕реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╛, рдЬрдм рддрдХ рдХрд┐ рдмреА рдмрдбрд╝рд╛ рди рд╣реЛ рдФрд░ рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛ, рддреЛ рд╢рд╛рдпрдж рдмрд╕ рдХрд╛рд╕реНрдЯ рдХрд░реЗрдВ рдмреА рдкрд╣рд▓реЗред