猿问

从 2 个列表创建 3d 矩阵

我有两个值列表,x和y:


index = np.arange(-1,1,0.01)

x = index

y = index

在这个列表中,我想创建一个3d plot,为此我需要z,我目前有以下代码:


z = []

for i in x:

    temp_list = []

    for i2 in y:

        temp_list.append(-(i**2+i2**2))

    z.append(temp_list)

有了这些数据,我可以生成下图:

问题:

如何(len(x), len(y)) 仅使用 numpy方法而不是使用此迭代生成具有形状的列表 z,我在我的示例中正在做?

+1 for oneliners


萧十郎
浏览 103回答 2
2回答

侃侃无极

使用广播:import numpy as npindex = np.arange(-1, 1, 0.1)Z = -(index[:,None] ** 2 + index[None, :] ** 2)这样你就可以避免使用np.meshgrid. 如果轴不一样,你应该像这样使用它:Z = -(x_axis[:,None] ** 2 + y_axis[None, :] ** 2)

眼眸繁星

您可以使用numpy.meshgrid从生成 xy 坐标index:import numpy as npindex = np.arange(-1, 1, 0.1)x, y = np.meshgrid(index, index)z = -(np.square(x) + np.square(y))
随时随地看视频慕课网APP

相关分类

Python
我要回答