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

C#中与numpy.expand_dims功能等价的实现方法是什么

参考Python实现效果:

import numpy as np
a = np.array([2,4])
b = np.expand_dims(a, axis=0)
# b输出为 array([[2,4]]),shape为(1,2)
C#实现等价扩展维度的方案

1. 纯原生实现(无需第三方依赖)

直接将一维数组封装为对应shape的二维数组即可,示例代码如下:

// 原始一维数组,对应Python代码中的 np.array([2,4])
int[] a = new int[] { 2, 4 };
// 在axis=0维度扩展,得到shape为(1,2)的二维数组
int[,] b = new int[1, a.Length];
for (int i = 0; i < a.Length; i++)
{
    b[0, i] = a[i];
}

// 维度验证:b.GetLength(0) 返回1,b.GetLength(1) 返回2,和Python效果一致

如果需要通用的扩展维度方法,可以封装为泛型工具函数,支持axis=0和axis=1两种常见场景:

public static class ArrayExtension
{
    /// <summary>
    /// 为一维数组扩展维度
    /// </summary>
    /// <param name="source">原始一维数组</param>
    /// <param name="axis">扩展维度的位置,0为行维度,1为列维度</param>
    /// <returns>扩展后的二维数组</returns>
    public static T[,] ExpandDims<T>(this T[] source, int axis = 0)
    {
        if (source == null) throw new ArgumentNullException(nameof(source));
        if (axis is < 0 or > 1) throw new ArgumentOutOfRangeException(nameof(axis), "仅支持axis=0或axis=1");

        var result = axis == 0 ? new T[1, source.Length] : new T[source.Length, 1];
        for (int i = 0; i < source.Length; i++)
        {
            if (axis == 0) result[0, i] = source[i];
            else result[i, 0] = source[i];
        }
        return result;
    }
}

// 调用示例
int[] a = new int[] { 2, 4 };
int[,] b = a.ExpandDims(0);

2. 使用MathNet.Numerics实现(数值计算场景推荐)

MathNet.Numerics是C#生态中主流的数值计算库,功能对标Python的numpy,实现方式如下:

  1. 先安装NuGet依赖:MathNet.Numerics
  2. 示例代码:
using MathNet.Numerics.LinearAlgebra;

// 构建一维向量,对应numpy的一维数组
var a = Vector<double>.Build.Dense(new double[] { 2, 4 });
// 转为行矩阵,等价于expand_dims(axis=0),shape为(1,2)
var b = a.ToRowMatrix();

// 维度验证:b.RowCount = 1,b.ColumnCount = 2

如果需要axis=1的扩展效果,调用a.ToColumnMatrix()即可得到shape为(n,1)的矩阵。

3. 使用NumSharp实现(接口完全对齐numpy)

NumSharp是专门仿照numpy接口开发的C#库,调用方式和Python几乎完全一致:

  1. 先安装NuGet依赖:NumSharp
  2. 示例代码:
using NumSharp;

var a = np.array(new int[] { 2, 4 });
var b = np.expand_dims(a, axis: 0);
// 效果和Python完全一致,b.shape 输出为 (1, 2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:15:05