我的目标是创建两个随机数据数组,并使用公式x^2+y^2检查它们是否落在半径为1的圆内<;1.落在圆圈内的应标为蓝色圆圈,落在圆圈外的应标为黄色圆圈
我已经成功地创建了数组,检查它们是否在圆内,然后绘制它们
import matplotlib.pyplot as plt
import numpy as np
plots = 100
#creates x-coordinates
dataOne = np.random.random(size = plots)
#creates y-coordinates
dataTwo = np.random.random(size = plots)
circle = plt.Circle((0,0), 1, alpha = 0.1)
plt.gca().add_patch(circle)
plt.xlim(0, 2)
plt.ylim(0, 2)
squareDataOne = dataOne ** 2
squareDataTwo = dataTwo ** 2
squareRootData = np.sqrt(squareDataOne + squareDataTwo)
insideCircle = squareRootData < 1
for values in insideCircle:
if values == True:
plt.plot(squareDataOne, squareDataTwo, 'bo')
else:
plt.plot(squareDataOne, squareDataTwo, 'yo')
plt.show()
我的问题在于情节本身。绘制时,我有点落在圆外,仍然是蓝色的。情节上根本没有出现黄色的圆圈。任何关于我的代码哪里出错的建议都将不胜感激
您需要更多地考虑矢量化的术语,并学习更多有关切片numpy数组的知识。有一个非常优雅的解决方案:
你应该试试
编辑:应该绘制
dataOne
和dataTwo
,而不是squareDataOne
和squareDataTwo
(在代码中更改)相关问题 更多 >
编程相关推荐