C#中矩阵的使用

前言

矩阵在数据处理中有非常广泛的应用,本文主要记录在C#中应用矩阵来处理数据,在后续学到新的相关内容会不时对本文进行更新。

一. 给矩阵添加行列

在数据质量控制中经常会使用滑窗方法,此时对边界层数据就要添加行或列,本部分即为对数据添加行/列的实现方式

csharp 复制代码
using MathNet.Numerics.LinearAlgebra.Single;
namespace MyConsoleAPPTest
{
	class Program
	{
		private bool addMatrix(out DenseMatrix denseMatrix)
		{
			// 创建矩阵并初始化
			float[,] matrix = new float[3,3]{{1,2,3},{4,5,6},{7,8,9}};
			DenseMatrix denseMatrix = DenseMatrix.OfArray(matrix);
			int rowCount = denseMatrix.RowCount;
			// 上下加一行
			var rowEndSub = denseMatrix.SubMatrix(0, 1, 0, 3);//第0行开始取1行,第0列开始取3列
			var rowStartSub = denseMatrix.SubMatrix(rowCount - 1, 1, 0, 3);
			denseMatrix = (DenseMatrix)denseMatrix.Stack(rowEndSub); // 会加到后行
			denseMatrix = (DenseMatrix)rowStartSub.Stack(denseMatrix);
			// 左右各加一列
			var colMat = DenseMatrix.Create(rowCount+2, 1, float.NaN);
			denseMatrix = (DenseMatrix)colMat.Append(denseMatrix);  // 以列加入
			denseMatrix = (DenseMatrix)denseMatrix.Append(colMat);
			return true;			
		}
		static void Main(string[] args)
		{
			Program p = new Program();
			p.addMatrix(out DenseMatrix denseMatrix);
		}
	}
}

输出的矩阵会在原来矩阵的第一行前加入其最后一行,最后一行加入其第一行,左边和右边分别加入一列NaN。

2024.10.16 16:19

未完待续。。。
相关推荐
Keep_Trying_Go20 分钟前
基于Zero-Shot的目标计数算法详解(Open-world Text-specified Object Counting)
人工智能·pytorch·python·算法·多模态·目标统计
xl.liu39 分钟前
零售行业仓库商品数据标记
算法·零售
confiself43 分钟前
通义灵码分析ms-swift框架中CHORD算法实现
开发语言·算法·swift
做怪小疯子1 小时前
LeetCode 热题 100——二叉树——二叉树的层序遍历&将有序数组转换为二叉搜索树
算法·leetcode·职场和发展
CoderYanger1 小时前
递归、搜索与回溯-记忆化搜索:38.最长递增子序列
java·算法·leetcode·1024程序员节
xlq223222 小时前
22.多态(下)
开发语言·c++·算法
CoderYanger2 小时前
C.滑动窗口-越短越合法/求最长/最大——2958. 最多 K 个重复元素的最长子数组
java·数据结构·算法·leetcode·哈希算法·1024程序员节
却话巴山夜雨时i3 小时前
394. 字符串解码【中等】
java·数据结构·算法·leetcode
haing20193 小时前
使用黄金分割法计算Bezier曲线曲率极值的方法介绍
算法·黄金分割
leoufung3 小时前
LeetCode 230:二叉搜索树中第 K 小的元素 —— 从 Inorder 遍历到 Order Statistic Tree
算法·leetcode·职场和发展