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

如何用Python的meshgrid获取不规则轴划分的4D超立方体坐标?

4D不规则网格超立方体坐标生成实现

核心思路

针对各轴不规则划分的4D网格,每个超立方体由各轴上的一段相邻区间组合而成,每个超立方体包含2^4=16个顶点——顶点坐标是各轴区间左右端点的所有组合。

Python代码实现

import numpy as np
from itertools import product

# 定义各轴的不规则划分点
x = [0, 1, 2, 3, 5]
y = [0, 1, 2, 3]
z = [0, 1, 2, 3, 4]
w = [0, 1, 2, 3, 5, 6]

# 1. 生成各轴的相邻区间(左端点,右端点)
x_intervals = list(zip(x[:-1], x[1:]))
y_intervals = list(zip(y[:-1], y[1:]))
z_intervals = list(zip(z[:-1], z[1:]))
w_intervals = list(zip(w[:-1], w[1:]))

# 2. 获取所有4D超立方体的区间组合(每个元素对应一个超立方体的各轴区间)
all_hypercube_intervals = list(product(x_intervals, y_intervals, z_intervals, w_intervals))

# 3. 生成每个超立方体的所有顶点坐标
all_hypercube_vertices = []
for hc_intervals in all_hypercube_intervals:
    # 对每个轴的两个端点做笛卡尔积,得到16个顶点
    vertices = list(product(*hc_intervals))
    # 转换为numpy数组方便后续数值计算
    vertices_np = np.array(vertices)
    all_hypercube_vertices.append(vertices_np)

# 示例:输出第一个超立方体的顶点坐标
print("第一个4D超立方体的16个顶点:")
print(all_hypercube_vertices[0])

# 输出超立方体总数
print(f"\n生成的4D超立方体总数:{len(all_hypercube_vertices)}")

代码说明

  • 各轴区间生成:通过zip(x[:-1], x[1:])获取相邻点对,得到每个轴上的所有连续区间。
  • 超立方体区间组合:用itertools.product将四个轴的区间做笛卡尔积,得到所有可能的超立方体区间组合,总数为各轴区间数的乘积(示例中为4×3×4×5=240个)。
  • 顶点生成:对每个超立方体的各轴区间端点做笛卡尔积,得到该超立方体的全部16个顶点,转换为numpy数组便于后续数值处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:45:15