我有一些复数z数组,我想用ncol函数把它转换成rgb值。然后我想用它来创建pygame syrfarray。这里是例子
import numpy as np
import cmath
z = np.array([[(complex(-(x/2),-(y/2))) for x in range(2)]for y in range(2)])
def ncol(z):
if cmath.phase(z)>180:
w = (255,255,255)
else:
w = (125,125,0)
return w
fz = np.frompyfunc(ncol,1,1)
w = fz(z)
print(w)
我怎么能把它翻译成pygame的surfarray呢?
我试过了
pygame.surfarray.blit_array(surf,w)
但它给了
ValueError: Unsupported array element type
据我所知,z的形状为(2,2),surfarray的正确形状为(2,2,3)
skrx给出的答案
w = np.array([list(arr) for arr in w])
最佳答案
数组的形状必须与曲面的大小匹配。这意味着如果你观察numpy.array(z).shape
的输出,输出必须(width, height, 3)
到你的曲面的大小。可以使用surf.get_width
和surf.get_height
检查曲面的宽度和高度。
此外,形状元组的第三个元素必须3
,因为曲面使用3元组来表示RGB颜色值。