You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何生成两个数组的所有组合并实现3D绘图展示

需求1:生成两个列表元素的所有可能组合

使用numpy.meshgrid()即可快速实现,该方法会将两个一维数组扩展为维度匹配的二维网格,网格对应位置的元素就是一组(x,y)配对,覆盖所有组合:

# 生成50*50的二维网格,覆盖所有x和y的配对
X_grid, Y_grid = np.meshgrid(x_interval, y_interval)

# 如果需要把所有组合展开为「每行一组(x,y)」的二维列表,可补充以下代码
all_pairs = np.column_stack((X_grid.ravel(), Y_grid.ravel()))
# 输出为2500行2列的数组,包含全部50*50的组合

需求2:所有组合计算结果的三维图展示

可以通过matplotlib自带的3D绘图接口实现,先对所有网格点计算输出值,再绘制曲面/散点图即可。基于你提供的代码逻辑调整后的完整可运行版本如下:

import numpy as np
from scipy.interpolate import barycentric_interpolate
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

def func(x,y):
    return 2*np.array(x) - np.array(y)**2

lower_x, upper_x = 100,150
lower_y, upper_y = 0.5,1.
x_interval = np.arange(lower_x, upper_x,1)    #X
y_interval = np.arange(lower_y, upper_y,0.01) #Y

x1 = np.linspace(lower_x, upper_x,7)
x2 = np.linspace(lower_y, upper_y,7)

# 适配单组(x,y)输入的计算函数,逻辑和你原代码完全一致
def calc_single_point(x, y):
    idx_x = np.argmin(np.abs(x_interval - x))
    idx_y = np.argmin(np.abs(y_interval - y))
    # 计算res_1对应值
    res_1 = barycentric_interpolate(x2, func(x, x2), y_interval)[idx_y]
    # 计算output对应值
    res_tot = [func(xi, x2)[np.argmin(np.abs(x1 - xi))] for xi in x1]
    output = barycentric_interpolate(x1, res_tot, x_interval)[idx_x]
    return res_1 - output * x

# 生成网格+批量计算所有组合的结果
X_grid, Y_grid = np.meshgrid(x_interval, y_interval)
vector_calc = np.vectorize(calc_single_point)
Z_grid = vector_calc(X_grid, Y_grid)

# 绘制三维曲面图
fig = plt.figure(figsize=(10,7))
ax = fig.add_subplot(111, projection='3d')
surf = ax.plot_surface(X_grid, Y_grid, Z_grid, cmap='viridis', edgecolor='none')
ax.set_xlabel('X值')
ax.set_ylabel('Y值')
ax.set_zlabel('计算结果')
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()

如果偏好散点展示,只需要把绘图部分的plot_surface替换为以下代码即可:

ax.scatter(X_grid.ravel(), Y_grid.ravel(), Z_grid.ravel(), c=Z_grid.ravel(), cmap='viridis', s=5)

内容的提问来源于stack exchange,提问作者John_maddon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:27:02