使用嵌套的for循环来评估每个坐标的函数 - python

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)的分辨率运行它并循环数千次.

Mic*_*ael 5

  1. 事实np.linspace并非如此np.linespace.
  2. 你不是在实际数据遍历所有,即ij没有甚至在你的内循环使用.现在,你正在一遍又一遍地使用相同的参数和相同的结果执行相同的语句.你可以只执行一次内部语句,X也是一样的.
  3. 您需要为结果预先分配2D数组.
  4. 迭代两个轴,抓取项目,rphi进行计算并将其放入输出数组的右侧字段中.
  5. 不知怎的,第一点让我觉得你从来没有尝试过运行你的代码,因为它给出了明显的错误信息.无论如何,这里有一些解决方案

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数组来解决数学问题.