Создайте эквивалент np.meshgrid, используя циклы for - PullRequest
0 голосов
/ 09 октября 2018

Этот код выводит график e ^ (- r ^ 2) на двумерной сетке x, y:

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, он использует циклы для создания 2-мерного пространства сетки.

Что-то вроде:

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])

, а затем использование циклов for для замены нулей в z на правильные значения в соответствии с x1d, y1d.

Но я не уверен, как использовать цикл for для зеркального отображения функции meshgrid.

Если бы кто-то мог указать мне правильное направление, я был бы признателен, спасибо

1 Ответ

0 голосов
/ 09 октября 2018

Это должно сделать:

for i,x in enumerate(x1d):
    for j,y in enumerate(y1d):
        z[i,j] = np.exp(-(x**2 + y**2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...