Julia的最低位置

时间:2016-05-27 03:45:32

标签: julia

Julia是否有内置命令来查找向量最小值的索引?例如,R具有which.min命令(当然还有which.max)。

显然,我自己可以写下面的内容,但是不要这样做会很好。

function whichmin( x::Vector )
  i = 1
  min_x=minimum(x)
  while( x[i] > min_x ) 
    i+=1 
  end
  return i
end

如果之前有人问过,请道歉,但我找不到。谢谢!

4 个答案:

答案 0 :(得分:9)

我相信indmax(itr)会做你想要的。来自朱莉娅documentation

  

indmax(itr)→整数

     
    

返回集合中最大元素的索引。

  

这是一个使用它的例子:

julia> x = [8, -4, 3.5]
julia> indmax(x)
1

答案 1 :(得分:9)

还有findmax,它返回最大值及其位置。

答案 2 :(得分:6)

由于0.7-alpha,indminindmax已过时。 改用argminargmax

对于矢量,它只返回线性索引

julia> x = rand(1:9, 4)
4-element Array{Int64,1}:
 9
 5
 8
 5

julia> argmin(x)
2

julia> argmax(x)
1

如果同时查找索引和值,请使用findminfindmax

对于多维数组,所有这些函数都返回CartesianIndex。

答案 3 :(得分:1)

对于multidim数组,您必须在线性索引和多维索引之间切换:

x = rand(1:9, 2,3)
# 2×3 Array{Int64,2}:
#  5  1  9
#  3  3  8

indmin(x)
# 3 
# => third element in the column-major ordered array (value=1)

ind2sub(size(x),indmin(x))
# (1, 2)
# => (row,col) indexes: what you are looking for.

- 莫里斯