如何用APL从温度数据中筛选出气温最高的日期?
使用APL筛选气温最高的日期
已有的代码实现了华氏温度到摄氏温度的转换,并生成了包含日期和对应摄氏气温的表格:
days ← 'Monday' 'Tuesday' 'Wednesday' 'Thursday' 'Friday' 'Saturday' 'Sunday' temp ← 7 1 1 ⍴78 80 89 82 79 89 73 Centigrade ← (5÷9) × {(⍵ - 32)} AverageTemp ← days,⍪(+/÷≢)⍤1⊢Centigrade temp AverageTemp ┌─────────┬───────────┐ │Monday │25.55555556│ ├─────────┼───────────┤ │Tuesday │26.66666667│ ├─────────┼───────────┤ │Wednesday│31.66666667│ ├─────────┼───────────┤ │Thursday │27.77777778│ ├─────────┼───────────┤ │Friday │26.11111111│ ├─────────┼───────────┤ │Saturday │31.66666667│ ├─────────┼───────────┤ │Sunday │22.77777778│ └─────────┴───────────┘
要筛选出气温最高的日期,只需在现有代码基础上添加以下步骤:
maxTemp ← ⌈/AverageTemp[;2] ⍝ 获取最高气温值 hottestDays ← AverageTemp[AverageTemp[;2] = maxTemp; 1] ⍝ 筛选出气温等于最高值的日期 hottestDays ┌─────────┬─────────┐ │Wednesday│Saturday │ └─────────┴─────────┘
代码说明:
⌈/AverageTemp[;2]:对AverageTemp的第二列(气温数据)取最大值,得到最高气温。AverageTemp[;2] = maxTemp:生成布尔数组标记气温等于最高值的行。AverageTemp[..., 1]:根据布尔数组筛选对应行,并提取第一列的日期数据。
内容的提问来源于stack exchange,提问作者bRaNdOn
相关产品推荐
相关产品推荐

