从2个列表创建3D矩阵

时间:2020-08-19 09:52:24

标签: 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)

使用这些数据,我可以生成以下图形: enter image description here

问题:

如何仅使用numpy 方法生成形状为(len(x), len(y))的列表z,而不是通过本次迭代来生成列表,

+1(单线)

2 个答案:

答案 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.meshgridindex生成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))
相关问题