sma*_*bro 2 python arrays numpy nested-loops coordinates
我试图使用嵌套的for循环来评估2D极坐标的每个组合的函数f(r).
我目前的代码是:
r = np.linspace(0, 5, 10)
phi = np.linespace(0,2*np.pi, 10)
for i in r:
for j in phi:
X = f(r) * np.cos(phi)
print X
Run Code Online (Sandbox Code Playgroud)
当我按原样运行时,它返回X作为f(r)的1D数组,cos(phi)是1(即phi = 0).但是我希望r的每个值都有f(r),然后乘以相应的phi值.这将是2D阵列(10乘10),其中评估r和phi的每个组合.
如果您对可能的效率有任何建议,我将不胜感激,因为最终我将以大于10(可能高达10,000)的分辨率运行它并循环数千次.
np.linspace并非如此np.linespace.i并j没有甚至在你的内循环使用.现在,你正在一遍又一遍地使用相同的参数和相同的结果执行相同的语句.你可以只执行一次内部语句,X也是一样的.r并phi进行计算并将其放入输出数组的右侧字段中.def f(x):
return x
r = np.linspace(0, 5, 10)
phi = np.linspace(0, 2*np.pi, 10)
X = np.zeros((len(r), len(phi)))
for i in xrange(len(r)):
for j in xrange(len(phi)):
X[i,j] = f(r[i]) * np.cos(phi[j])
print X
Run Code Online (Sandbox Code Playgroud)
PS不要使用将结果放入普通列表的解决方案,坚持使用numpy数组来解决数学问题.