我有两个值列表, 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)
问题:
如何仅使用numpy 方法生成形状为(len(x), len(y))
的列表z,而不是通过本次迭代来生成列表,
+1(单线)
答案 0 :(得分:2)
使用广播:
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)
答案 1 :(得分:1)
您可以使用numpy.meshgrid从index
生成x-y坐标:
import numpy as np
index = np.arange(-1, 1, 0.1)
x, y = np.meshgrid(index, index)
z = -(np.square(x) + np.square(y))