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๊ฐ ๊ฑฐ๋ํ๊ณ ์์ ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ๊ทธ๋ฅ ์บ์คํธ ใด ๋จผ์ .
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")
@seberg ๊ฐ์ฌํฉ๋๋ค :+1:
@FilipSavic95 : yn -= self.y_mean.astype(yn.dtype)
๋ ํ ์ ์์ต๋๋ค
@eric-wieser ์, ๋ฐฉ๊ธ ๊ทํ์ ์๋ฃจ์ ์ ์๋ํ๊ณ ์๋ํฉ๋๋ค. ๊ฒ์ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. :+1:
๋ฌธ์ ๋ ์์ ์์ฒด์ ์ฌ์ฉํ๋ ค๋ ์ ๋ฐ๋์ ๋๋ค. ์์ ํ์ง ์์ ์บ์คํ ์ ๋ ํฐ(rhs) ์ ๋ฐ๋(๋๋ ๊ฒฐํฉ๋ ์์ ํ dtype)๋ก ์์ ์ ์ํํ๊ณ ๋ค๋ฅธ ์ต์ ์ ์บ์คํ ์ ์ํํ๋ฏ๋ก ๋ ๋ฎ์ ์ ๋ฐ๋๋ก ์์ ์ ์ํํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ผ๋ฐ์ ์ผ๋ก ์ด๊ฒ์
a += b
์ ๊ฐ์ ์ฝ๋์ด๋ฉฐnp.add(a, b, out=a, casting="unsafe")
๋ก ๋ง๋ค์ด์ผ ํฉ๋๋ค(์์ ํ์ง ์์ ์บ์คํธ ๋์์ ์ํ๋ค๊ณ ํ์ ํ๋ ๊ฒฝ์ฐ. ๋๋ b๊ฐ ๊ฑฐ๋ํ๊ณ ์์ ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ๊ทธ๋ฅ ์บ์คํธ ใด ๋จผ์ .