#python #python-3.x #numpy #matplotlib
#python #python-3.x #numpy #matplotlib
Вопрос:
У меня есть два списка значений, x и y:
index = np.arange(-1,1,0.01)
x = index
y = index
Из этого списка я хочу создать 3d график, для этого мне нужен z, для которого у меня в настоящее время есть следующий код:
z = []
for i in x:
temp_list = []
for i2 in y:
temp_list.append(-(i**2 i2**2))
z.append(temp_list)
С помощью этих данных я могу сгенерировать следующий график:
Вопрос:
Как я могу сгенерировать список z с формой (len(x), len(y))
только с помощью методов numpy, а не с помощью этой итерации, которую я делаю в моем примере?
1 для однолинейных
Ответ №1:
Использование широковещательной передачи:
import numpy as np
index = np.arange(-1, 1, 0.1)
Z = -(index[:,None] ** 2 index[None, :] ** 2)
Таким образом, вы можете избежать использования np.meshgrid
. Если оси не совпадают, вы должны использовать это следующим образом:
Z = -(x_axis[:,None] ** 2 y_axis[None, :] ** 2)
Ответ №2:
Вы можете использовать numpy.meshgrid для генерации координат x-y из index
:
import numpy as np
index = np.arange(-1, 1, 0.1)
x, y = np.meshgrid(index, index)
z = -(np.square(x) np.square(y))