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")
bは巨大であり、それは安全でない限り、あなたはあなたが、危険なキャスト行動をしたい。あるいは、している場合は多分ちょうどキャスト、( b最初に。
gizeh / moviepyに加えられる変更について具体的に話していたことがわかります。
私の場合、同様の問題がありました。 sebergが提案したように解決されました。 gizeh.pyの40行目を置き換えました。
arr += image.flatten()
行付き:
arr = np.add(arr, image.flatten(), out=arr, casting="unsafe")
これが他の誰かに役立つことを願っています。
このような_減算_時にこの問題が発生しました:
yn -= self.y_mean
numpy.subtractを介して減算を
yn = np.subtract(yn, self.y_mean, out=yn, casting="unsafe")
どうもありがとう
@ PhilipSavic95 : yn -= self.y_mean.astype(yn.dtype)
も実行できます
@ eric-wieserええ、私はあなたの解決策を試したところですが、うまくいきます。 投稿していただきありがとうございます。 :+1:
問題は、操作自体にどの精度を使用するかです。 安全でないキャストは、より高い(rhs)精度(または組み合わせた安全なdtype)で操作を実行し、他のオプションはキャストを実行するため、より低い精度で操作を実行します。
最も参考になるコメント
通常、これは、次のようなコードで
a += b
、あなたはそれにする必要がありnp.add(a, b, out=a, casting="unsafe")
bは巨大であり、それは安全でない限り、あなたはあなたが、危険なキャスト行動をしたい。あるいは、している場合は多分ちょうどキャスト、( b最初に。