尝试在黑框内绘制白色圆圈时出错



这段代码提供了一个黑框,里面有一个白色圆圈,我得到了一个错误,我在代码下面添加了这个错误我正试图使用matplotlib在黑框内绘制一个白色圆圈,使用以下代码:

class Circle:
def __init__(self, resolution, radius, position):
self.resolution = resolution
self.radius = radius
self.position = (position[0], position[1])
self.output = []

def draw(self):
box = np.zeros((self.resolution, self.resolution))
s = (self.radius * 2, self.radius * 2)
xv, yv = np.meshgrid(np.arange(s[0]), np.arange(s[1]))
r = np.abs((xv) ** 2 + (yv) ** 2 - self.radius ** 2)
self.output = np.ones(r)
circumference_cir = self.output
return (circumference_cir)

def show(self):
image = self.output
plt.imshow(image)

obg = Circle(resolution= 16, radius= 2, position= (2,4))
obg.draw()
obg.show()

我有一个错误:

1 obg = Circle(resolution= 16, radius= 2, position= (2,4))
----> 2 obg.draw()
3 obg.show()

---> 16         self.output = np.ones(r)
17         circumference_cir = self.output
18         return (circumference_cir)

--> 192     a = empty(shape, dtype, order)
193     multiarray.copyto(a, 1, casting='unsafe')
194     return a

TypeError: only integer scalar arrays can be converted to a scalar
index.

我想数组转换为列表,但我不确定。我应该只使用numpy库。

代码中的np.ones行被错误调用(np.ones需要一个size元组,而不是一个大数组(。相反,尝试用类似的东西替换ones
self.output = r<0

这应该取r<0处的所有点,即半径内的所有点并将它们设置为1,将所有其他点设置为0

最新更新