首页 > 解决方案 > 从 2 个列表创建 3d 矩阵

问题描述

我有两个值列表,xy

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 单线

标签: pythonpython-3.xnumpymatplotlib

解决方案


使用广播:

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)

推荐阅读