将多维数组中的元素相乘
Posted
技术标签:
【中文标题】将多维数组中的元素相乘【英文标题】:Multiply element in multidimensional array 【发布时间】:2021-12-10 19:09:26 【问题描述】:->请帮忙实现一个函数
基本上我想操作图像
想象图像可以以像素为单位分开 -> 图像的每个像素将是(举个简单的例子)“一个数字”
int[,] originalImage = new int[,]
1,2,3 ,
4,5,6
;
我需要将图像的大小加倍 x2(或 x3、x4 等) 两倍大小的像素“1”将被复制到右边的位置,向下和角落
int[,] expectedResult = new int[,]
1,1,2,2,3,3 ,
1,1,2,2,3,3 ,
4,4,5,5,6,6 ,
4,4,5,5,6,6
;
该功能如何实现?
Multiply(int[,] originalImage, int multiply)
【问题讨论】:
虽然您可以编写一些困难的方法来执行此操作,但更好的方法是使用已经具有此功能的现有库。看看其中一些库。 devblogs.microsoft.com/dotnet/net-core-image-processing 【参考方案1】:请注意,有大量的库可以在数学或图像处理中执行此操作。但是,纯粹出于学术目的
给定
private static int[,] DoStuff(int[,] array,int size)
var sizeX = array.GetLength(0);
var sizeY = array.GetLength(1);
var newArray = new int[sizeX * size, sizeY * size];
for (var i = 0; i < newArray.GetLength(0); i++)
for (var j = 0; j < newArray.GetLength(1); j++)
newArray[i, j] = array[i / size, j / size];
return newArray;
用法
int[,] originalImage =
1, 2, 3 ,
4, 5, 6
;
var newArray = DoStuff(originalImage,3);
for (var i = 0; i < newArray.GetLength(0); i++)
for (var j = 0; j < newArray.GetLength(1); j++)
Console.Write(newArray[i, j] + " ");
Console.WriteLine();
输出
1 1 1 2 2 2 3 3 3
1 1 1 2 2 2 3 3 3
1 1 1 2 2 2 3 3 3
4 4 4 5 5 5 6 6 6
4 4 4 5 5 5 6 6 6
4 4 4 5 5 5 6 6 6
【讨论】:
以上是关于将多维数组中的元素相乘的主要内容,如果未能解决你的问题,请参考以下文章