我正在研究kmeans
聚类算法,我需要找到数组中最小值的索引。
例如,我为3个项目编写了这段代码:
if ((DistanceArray[1, j] < DistanceArray[2, j]) &&
(DistanceArray[1, j] < DistanceArray[3, j]))
{
min= 1;
}
else if (DistanceArray[2, j] < DistanceArray[3, j])
{
min= 2;
}
else
{
min= 3;
}
但我需要从多维数组中检索最小值。
怎么做呢?
答案 0 :(得分:1)
迭代每个值并将其与当前最小值进行比较。将min声明为float.MaxValue,因此除浮点数的最大值之外的任何数字都将小于它。
float min = float.MaxValue; //set 'min' to the maximum value of a float
int minI, minJ; //use if you want to track indices of the min value
for (int i = 0; i <= DistanceArray.GetUpperBound(0); i++)
{
for (int j = 0; j <= DistanceArray.GetUpperBound(1); i++)
{
if (DistanceArray[i, j] <= min) //changed to '<= min' to which means if
{ //there are multiple minimum values the
min = DistanceArray[i, j]; //one with the higher indices will be used
minI = i;
minJ = j;
}
}
}
答案 1 :(得分:0)
试试这个,这里arr是二维数组
int? minValue = null;
var i = 0;
var j = 0;
foreach (var m in arr)
{
var min1 = m.Min();
if (minValue == null || minValue > min1)
{
minValue = min1;
i = m.ToList().IndexOf(min1);
j = arr.ToList().IndexOf(m);
}
}