为什么我无法使用 NumPy 获得任何 3D 图输出?



我无法获得预期的输出,但也没有错误。你能帮我理解为什么吗?

我是 numpy的新手,所以我对 numpy 知之甚少。

# import libraries
import matplotlib.pyplot as plt
import numpy as np                       

# initialising arrays
n=100
r1=np.linspace(0,2,n)                    
r2=np.linspace(0,2,n)
p1=np.linspace(0,1,n)
time_avg=np.empty(shape=(0,n**2))
exp_avg=np.empty(shape=(0,n**2))
fig=plt.figure()
ax1=fig.add_subplot(111,projection='3d')
#calculating two things-time avgerage and expected average,plot accordingly
for i in range(0,n):
for j in range(0,n):
for k in range(0,n):
t=np.sqrt(r1[i]*r2[j])
time_avg=np.append(time_avg,t)               
e=(r1[i]*p1[k]+r2[j]*(1-p1[k]))               
exp_avg=np.append(exp_avg,e)
#conditions for plotting
if time_avg[-1]==exp_avg[-1]:                      
ax1.scatter(r1[i],r2[j],p1[k],color='k',marker='o')
if time_avg[-1]>exp_avg[-1]:
ax1.scatter(r1[i],r2[j],p1[k],color='r',marker='o')
if time_avg[-1]<exp_avg[-1]:
ax1.scatter(r1[i],r2[j],p1[k],color='b',marker='o')
#plotting 
ax1.set_xlabel('r1')
ax1.set_ylabel('r2')
ax1.set_label('p1')
plt.show()

如果没有对环境、软件包版本以及您要完成的任务的更多详细信息,很难确定您的问题是什么。

在不了解更多信息的情况下,我看到您的代码可能存在两个问题:

您的
  • 代码运行良好,但您的环境未设置为正确显示图形。
  • 您的代码运行良好,但运行需要很长时间。

我的猜测是你的代码工作"很好",只是需要很长时间才能运行。例如,这里有一个实际上生成图形的 repl.it(请注意,变量n已设置为10而不是100(。

不用太技术化,你的代码在计算上非常复杂(O(n^3((。如果没有关于代码运行环境的更多细节,我认为假设您的代码只是在度过甜蜜的时间是合理的。

也许一个很好的后续行动是检查你的代码是否确实完成了,当它完成时,它实际上显示了一个空的图形。

最新更新