我是新来的numpy,有如下任务:我需要创建两个numpy随机整数数组(介于0+1之间)。一个numpy数组表示x坐标,另一个表示y坐标。然后我需要用平方根(x^2+y^2)<;1检查点是否落在半径为1的圆内。在
我现在只是想把我的数组平方,然后把它们加在一起。一个很简单的任务就是给我无穷无尽的麻烦。在
import matplotlib.pyplot as plt
import numpy as np
plots = 100
dataOne = np.random.random(size = plots)
dataTwo = np.random.random(size = plots)
circle = plt.Circle((0,0), 1, alpha = 0.1)
plt.gca().add_patch(circle)
plt.xlim(0, 5)
plt.ylim(0, 5)
plt.show()
squareDataOne = dataOne ** 2
squareDataTwo = dataTwo ** 2
if squareDataOne + squareDataTwo < 1:
print("Now check square-root!")
我一直收到一条错误消息:具有多个元素的数组的真值不明确。使用a.any()或a.all()。有人能解释一下Python/Numpy为什么不喜欢这个吗?我被告知要尝试使用布尔表达式来分割数组。有谁能提供建议,以最好的方式将这一点纳入我的给定代码? 任何对新手的建议或建议都将不胜感激。在
您可以使用array filtering
这将给出
r_inside_circle
中圆内所有点的半径。当您增加值plots
时,您将看到(4.0*len(r_inside_circle))/len(dataOne)
将接近PI。在squareDataOne如下所示:
squareData2看起来很相似。if语句中的表达式:
^{pr2}$生成此数组:
因此,您的if语句需要一个True或False值,并得到这个数组。错误消息告诉您,Python不知道如何将这个数组转换为单个True或False值。在
我对你的代码的逻辑还不够了解,不知道你需要做些什么来解决这个问题。显然,您有很多数据,但是您希望决定一个二进制事件;如果您应该打印“现在检查平方根!”或者不是。我不知道你该怎么做。在
它表明
^{pr2}$inside_circle
是一个由数据类型“bool”组成的numpy数组,指示每个点是否在圆内,而不是一个“bool”变量,这就是pythonif
语句抛出错误的原因。您可以对inside_circle
中的所有“bool”求和,以获得圆内的点数(对bool数组求和时,numpy将True
视为1,False
为0)。在估计差不多了,对吧?在
相关问题 更多 >
编程相关推荐