DevCN
菜单
全部文章快讯开发深度热点

Julia 入门:广播转换与有效时长统计

用向量过滤负时长,再通过广播把分钟转换为小时,理解点运算、元素类型与原数组保持不变的关系。


本节目标

用向量过滤负时长,再通过广播把分钟转换为小时,理解点运算、元素类型与原数组保持不变的关系。

环境与运行方法

使用 Julia 1.11,保存为 lesson.jl,运行 julia --startup-file=no lesson.jl。示例只依赖基础语言,不需要安装数据分析包。

核心思路

Julia 的广播将标量操作应用到集合元素,点语法让逐元素计算明确。filter 创建筛选结果,随后除以 60 得到浮点小时数。示例没有原地修改输入。

完整示例

records = [30, -5, 60, 0]
valid = filter(x -> x >= 0, records)
hours = valid ./ 60
println("valid=", length(valid), " total=", sum(valid))
println(join(hours, ","))
println("original=", length(records))

预期输出

valid=3 total=90
0.5,1.0,0.0
original=4

逐步理解

匿名函数 x->x>=0 保留三项,./ 对每个分钟数除以 60。整数输入转换后小时数包含小数,join 只影响展示。原数组仍有四项。

广播能表达逐元素计算,但不能随意把矩阵运算与逐元素运算混同。A*B 与 A.*B 含义不同。若采用原地广播,还需确保目标元素类型可以保存结果,否则可能发生转换错误。

常见问题与边界

  • 普通矩阵乘法与逐元素乘法不同。
  • 把浮点结果写回整数数组需要明确转换规则。
  • 全部过滤掉时仍要定义平均值或展示行为。

动手练习

把第一项改为 15,预测小时向量与总分钟数。

参考答案

小时向量为 0.25、1.0、0.0,总分钟数为 75。数值计算与显示格式分开考虑,不能为了展示整齐而提前截断数据。

DISCUSSION

文章回复

0 条公开回复
未登录回复需要审核后公开
还没有回复,欢迎参与讨论。