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。数值计算与显示格式分开考虑,不能为了展示整齐而提前截断数据。
文章回复
0 条公开回复