【问题标题】:Create the equivalent of np.meshgrid using for loops使用 for 循环创建等效的 np.meshgrid
【发布时间】:2018-10-09 03:57:50
【问题描述】:

此代码在二维 x,y 网格上输出 e^(-r^2) 的图:

import numpy as np
import matplotlib.pyplot as plt

x1d = np.arange(-3, 3, 0.006)
y1d = np.arange(-3, 3, 0.006)

x2d, y2d = np.meshgrid(x1d, y1d)
r2d = x2d**2 + y2d**2

z = np.exp(-r2d)

plt.imshow(z, extent = (3, -3 , 3 , -3))
plt.title("A 2-D Image plot")
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.savefig('2dexp_array.pdf', format ='pdf')
plt.show(block = False)

我想更改代码,使其不使用 np.meshgrid ,而是使用 for 循环来生成 2d 网格空间。

类似:

import numpy as np
import matplotlib.pyplot as plt

x1d = np.arange(-3, 3, 0.006)
y1d = np.arange(-3, 3, 0.006)

z = np.zeros([2000, 2000])

然后根据 x1d , y1d 使用 for 循环将 z 中的零替换为正确的值。

但我不确定如何使用 for 循环来镜像 meshgrid 的功能。

如果有人能指出我正确的方向,我将不胜感激 谢谢

【问题讨论】:

  • 嗨!为什么要尝试使用循环生成网格空间?
  • 你为什么要尝试使用循环来生成网格?你的例子会慢 80 倍。

标签: python numpy for-loop


【解决方案1】:

应该这样做:

for i,x in enumerate(x1d):
    for j,y in enumerate(y1d):
        z[i,j] = np.exp(-(x**2 + y**2))

【讨论】:

  • 不应该是 z[len(x1d)-i,len(y1d)-j] 吗?
猜你喜欢
  • 2019-06-03
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-17
  • 2014-03-06
  • 2020-03-29
  • 2016-05-08
相关资源
最近更新 更多