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

如何从一维ndarray创建三维ndarray(对应NumPy meshgrid的Rust实现)

Rust实现类似NumPy meshgrid的三维坐标数组生成

要在Rust中实现和你给出的Python代码相同的功能,我们可以使用ndarray库(Rust生态中常用的多维数组库),具体步骤如下:

1. 添加依赖

首先在Cargo.toml中加入ndarray的依赖:

[dependencies]
ndarray = "0.15"

2. 实现代码

use ndarray::{Array1, Axis, linspace, meshgrid, GridIndexing};

fn main() {
    // 生成三个一维数组,对应Python中的np.linspace(-1, 1, 50)
    let x = linspace(-1.0, 1.0, 50);
    let y = linspace(-1.0, 1.0, 50);
    let z = linspace(-1.0, 1.0, 50);

    // 生成网格并指定ij索引模式,匹配NumPy的indexing="ij"
    let (xx, yy, zz) = meshgrid(&x, &y, &z).indexing(GridIndexing::Ij);

    // 将三个三维数组合并为一个形状为(3, 50, 50, 50)的数组
    let a = ndarray::stack(Axis(0), &[xx.view(), yy.view(), zz.view()])
        .expect("数组合并失败");

    // 输出数组形状验证结果
    println!("数组形状: {:?}", a.shape());
}

代码说明

  • linspace:和NumPy的np.linspace功能完全一致,用于生成指定区间、指定数量的一维均匀分布数组。
  • meshgrid:ndarray的meshgrid默认使用xy索引模式,通过.indexing(GridIndexing::Ij)可以切换为和NumPy一致的ij索引。
  • stack:沿着第0轴(最外层)合并三个三维数组,最终得到的数组形状和你Python代码中a的形状完全相同((3, 50, 50, 50))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 13:31:02