将多维数组中的元素相乘

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

【讨论】:

以上是关于将多维数组中的元素相乘的主要内容,如果未能解决你的问题,请参考以下文章

多维数组

array_uintersect 将多维数组的每一行中的特定元素与字符串的平面数组进行比较

PHP使用array_push将元素添加到多维数组

如何删除多维数组中的唯一元素?

关于多维数组的注意事项

C++ 数组与字符串⁽²²⁾|多维数组