Numpy: TypeError:キャストルール 'same_kind'を使用して、dtype( 'float64')からdtype( 'uint8')にufuncadd出力をキャストできません

作成日 2016年02月10日  ·  10コメント  ·  ソース: numpy/numpy

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'

回避策はありますか、それともこの問題を修正していただけますか?

最も参考になるコメント

通常、これは、次のようなコードでa += b 、あなたはそれにする必要がありnp.add(a, b, out=a, casting="unsafe") bは巨大であり、それは安全でない限り、あなたはあなたが、危険なキャスト行動をしたい。あるいは、している場合は多分ちょうどキャスト、( b最初に。

全てのコメント10件

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")

どうもありがとう

@ PhilipSavic95yn -= self.y_mean.astype(yn.dtype)も実行できます

@ eric-wieserええ、私はあなたの解決策を試したところですが、うまくいきます。 投稿していただきありがとうございます。 :+1:

問題は、操作自体にどの精度を使用するかです。 安全でないキャストは、より高い(rhs)精度(または組み合わせた安全なdtype)で操作を実行し、他のオプションはキャストを実行するため、より低い精度で操作を実行します。

このページは役に立ちましたか?
0 / 5 - 0 評価