أنا أستخدم مكتبة الجيزة ويظهر لي الخطأ أعلاه عند تثبيت أحدث إصدار من Numpy. لم يكن هناك خطأ في الإصدار 1.08 من Numpy.
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'
هل هناك حل بديل أم يمكنك إصلاح هذه المشكلة من فضلك؟
تحتاج إلى جعل التمثيل واضحًا باستخدام الوسيطة casting
في np.add
ufunc. السلوك الذي تعتمد عليه الجيزة منتهي منذ 1.7.
هذا هو casting='unsafe'
.
أين يجب أن أغير هذا @ charris ؟
عادةً ما يكون هذا رمزًا مثل a += b
وتحتاج إلى جعله np.add(a, b, out=a, casting="unsafe")
(إذا كنت متأكدًا من رغبتك في السلوك غير الآمن. ب أولا.
أفهم أنني كنت أتحدث على وجه التحديد عن التغييرات التي يجب إجراؤها على الجيزة / فيلم.
في حالتي ، لدي مشكلة مماثلة. تم حلها على النحو الذي اقترحه seberg. لقد استبدلت الخط 40 في الجيزة. py:
arr += image.flatten()
مع السطر:
arr = np.add(arr, image.flatten(), out=arr, casting="unsafe")
آمل أن يساعد هذا شخصًا آخر.
واجهت هذه المشكلة عندما _طرح_ مثل هذا:
yn -= self.y_mean
اختفى خطأي عندما أجريت عملية الطرح عبر
yn = np.subtract(yn, self.y_mean, out=yn, casting="unsafe")
شكرا جزيلا seberg : +1:
@ FilipSavic95 : يمكن أن تفعل أيضًا yn -= self.y_mean.astype(yn.dtype)
@ eric-wieser نعم ، لقد جربت للتو الحل الذي قدمته وهو يعمل. شكرا لنشرها. : +1:
السؤال هو ما هي الدقة التي تريد استخدامها للعملية نفسها. ستقوم عملية الصب غير الآمنة بالعملية بدقة (rhs) الأكبر (أو النوع الآمن المدمج) ، وسيقوم الخيار الآخر بعملية الصب وبالتالي العملية بدقة أقل.
التعليق الأكثر فائدة
عادةً ما يكون هذا رمزًا مثل
a += b
وتحتاج إلى جعلهnp.add(a, b, out=a, casting="unsafe")
(إذا كنت متأكدًا من رغبتك في السلوك غير الآمن. ب أولا.