首页 > 解决方案 > 当你有一个数组时,如何获得一个结构的项目的最大值?

问题描述

我在 Julia 中有以下结构,并用它创建了一个数组。

julia>     struct myStruct
              a::Int
              b::Int
              c::String
           end

julia>     myArray = myStruct.(1:10,11:20,"ABC")
10-element Array{myStruct,1}:
 myStruct(1, 11, "ABC") 
 myStruct(2, 12, "ABC") 
 myStruct(3, 13, "ABC") 
 myStruct(4, 14, "ABC") 
 myStruct(5, 15, "ABC") 
 myStruct(6, 16, "ABC") 
 myStruct(7, 17, "ABC") 
 myStruct(8, 18, "ABC") 
 myStruct(9, 19, "ABC") 
 myStruct(10, 20, "ABC")

我应该在 Julia 中做什么来获得 的最大值a

是否建议首先使用结构的前两个值获取一个 2 列数组,然后用于findmax(my2colArray[:,1])查找最大值?

我有三个问题要了解我该怎么做:

  1. 如果需要先获取数组,如何有效地获取 2 列数组?
  2. a如果不需要,我将如何直接从结构数组中获取最大值?
  3. 该字符串最多包含 50 个字符,它们将是 ASCII(非 UTF-8)。我应该以某种方式修复字符串的长度以提高性能吗?

标签: julia

解决方案


您可以使用该maximum功能。maximum还接受一个函数,在这种情况下,您可以使用该函数按a字段排序:

julia> struct myStruct
           a::Int
           b::Int
           c::String
       end

julia> myArray = myStruct.(21:30,11:20,"ABC");

julia> val = maximum(x -> x.a, myArray)
30

(稍微修改您的示例以使最大值和索引不同)。


推荐阅读