我目前正在使用NoPy数组向Python移植C++程序。我正在寻找一种方法,如果可能的话,以更python的方式实现以下循环:
for (int j = start_y; j < end_y; j++)
{
for (int i = start_x; i < end_x; i++)
{
plasmaFreq[i][j] = plasmaFreq_0*(tanh((i - 50)/10) - tanh((i - (nx - 50))/10))/2.0;
}
}
上面,plasmaFreq_0是一个传递到周围函数的常数,nx也是。显然,将循环边界向量化以操作numpy数组的特定区域是很容易的,但这就给我留下了一个问题,即如何在数组中映射上述依赖于索引的函数。在
你需要一个数组
i
我认为广播应该从那里开始。在
请注意,您的原始代码非常低效1。。。首先,计算每个
^{pr2}$j
的右侧,但它不依赖于j
,因此只需要计算一次。其次,你的内部循环在慢索引之上,所以你不能有效地使用你的缓存。我可能会这样写:1效率如何取决于编译器在计算循环方面的能力。也许有一天,有些编译器可以从你和我的编译器中生成相同的代码
相关问题 更多 >
编程相关推荐