代码中的
这段代码提供了一个黑框,里面有一个白色圆圈,我得到了一个错误,我在代码下面添加了这个错误我正试图使用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
。