gpt4 book ai didi

arrays - 在由可变结构元素组成的数组中的数据中使用 findmin() - Julia

转载 作者:行者123 更新时间:2023-12-04 01:31:26 24 4
gpt4 key购买 nike

假设我有以下结构:

mutable struct Car
load
locale
availability
odometer
end

我创建了一个数组:

fleet = Vector{Car}(undef, num_cars)

for i in 1:num_cars
a, b, c, d = rand(4)
fleet[i] = Car(a, b, c, d)
end

例如,如何从数组中所有汽车的里程表中找到最小值(使用 findmin 或类似值)或最大值(使用?)?

基本上,我希望能够对结构数组使用条件语句,例如:对于我的结构数组中的每个元素,获取数据满足条件的元素,并从中获取另一个数据的最小值。

谢谢!

最佳答案

找到最小值非常简单,使用 minimum 函数和一个映射参数:

julia> minimum(x->x.odometer, fleet)
0.08468003971220694

如果您还想要最小值的索引,可以使用findmin 函数。不幸的是,出于某种原因,这不支持函数参数,因此您必须创建一个临时数组,并将 findmin 应用于该数组:

julia> findmin(getfield.(fleet, :odometer))
(0.08468003971220694, 1)

您也可以使用 getproperty 而不是 getfield,它们对您的结构做同样的事情,我不确定哪个更可取。可能,最惯用的解决方案是定义访问器函数而不是直接使用字段值。例如:

odometer(car::Car) = car.odometer
minimum(odometer, fleet)
findmin(odometer.(fleet))

对于最大值,使用maximumfindmax

关于arrays - 在由可变结构元素组成的数组中的数据中使用 findmin() - Julia,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60937600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com