Numpy: TypeError: Tidak dapat menggunakan ufunc add output dari dtype('float64') ke dtype('uint8') dengan aturan casting 'same_kind'

Dibuat pada 10 Feb 2016  ·  10Komentar  ·  Sumber: numpy/numpy

Saya menggunakan perpustakaan Gizeh dan saya mendapatkan kesalahan di atas saat menginstal Numpy versi terbaru. Tidak ada kesalahan dengan Numpy versi 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'

Apakah ada solusi atau tolong perbaiki masalah ini?

Komentar yang paling membantu

Biasanya ini adalah kode seperti a += b dan Anda perlu membuatnya np.add(a, b, out=a, casting="unsafe") (jika Anda yakin menginginkan perilaku pemeran yang tidak aman. Atau, kecuali b besar dan aman, mungkin hanya cast b pertama.

Semua 10 komentar

Anda perlu membuat pemeran eksplisit menggunakan argumen casting di np.add ufunc. Perilaku yang bergantung pada Gizeh telah ditinggalkan sejak 1.7.

Itu adalah casting='unsafe' .

di mana saya harus mengubah @charris ini?

Biasanya ini adalah kode seperti a += b dan Anda perlu membuatnya np.add(a, b, out=a, casting="unsafe") (jika Anda yakin menginginkan perilaku pemeran yang tidak aman. Atau, kecuali b besar dan aman, mungkin hanya cast b pertama.

Saya mengerti bahwa saya berbicara secara khusus untuk perubahan yang akan dilakukan pada gizeh/moviepy .

Dalam kasus saya, saya memiliki masalah serupa. Itu diselesaikan seperti yang disarankan oleh seberg. Saya mengganti baris 40 di gizeh.py:

arr += image.flatten()

dengan garis:

arr = np.add(arr, image.flatten(), out=arr, casting="unsafe")

Saya harap ini membantu orang lain.

Saya mengalami masalah ini ketika _mengurangi_ seperti ini:
yn -= self.y_mean

Kesalahan saya hilang ketika saya melakukan pengurangan melalui numpy.subtract , seperti:
yn = np.subtract(yn, self.y_mean, out=yn, casting="unsafe")

Terima kasih banyak @seberg :+1:

@FilipSavic95 : Bisa juga melakukan yn -= self.y_mean.astype(yn.dtype)

@eric-wieser Ya, saya baru saja mencoba solusi Anda dan berhasil. Terima kasih telah mempostingnya. :+1:

Pertanyaannya adalah presisi mana yang ingin Anda gunakan untuk operasi itu sendiri. pengecoran yang tidak aman akan melakukan operasi dalam presisi (rhs) yang lebih besar (atau kombinasi tipe aman) opsi lain akan melakukan gips dan dengan demikian operasi dalam presisi yang lebih rendah.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat