You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Python统计不同LST时段城市热岛强度最大值出现频次

城市热岛强度(UHII)时段最大值统计实现方案

逻辑梳理

你的数据是每行对应1天的8个时段UHII值,列顺序对应3、6、9、12、15、18、21、00 LST。要实现的目标就是:

  • 找出每天最大值所在的时段位置
  • 统计每个时段“成为当日最大值”的总次数

高效实现(Numpy版,适配大数组)

针对9922行的大数据量,用Numpy处理比纯循环快数十倍,代码也简洁:

import numpy as np

# 假设你的UHII数据已经是numpy数组(如果是CSV读取,可用np.loadtxt转成数组)
uhii_data = np.loadtxt("your_data.csv", delimiter=",")  # 替换成你的数据路径

# 1. 按行找出每个最大值对应的列索引(axis=1表示逐行处理)
daily_max_indices = np.argmax(uhii_data, axis=1)

# 2. 统计每个索引出现的次数,minlength=8确保覆盖8个时段
counts = np.bincount(daily_max_indices, minlength=8)

print(counts)  # 输出结果就是你要的数组,顺序对应8个LST时段

纯循环实现(新手理解版)

如果想搞懂底层逻辑,用纯Python循环写的话:

# 假设数据是列表格式(比如从CSV读取的列表)
uhii_data = []
with open("your_data.csv", "r") as f:
    for line in f:
        row = [float(num) for num in line.strip().split(",")]
        uhii_data.append(row)

# 初始化8个时段的计数为0
counts = [0] * 8

# 逐天处理
for daily_values in uhii_data:
    max_val = max(daily_values)
    # 找到最大值对应的第一个时段索引
    max_idx = daily_values.index(max_val)
    counts[max_idx] += 1

# 转成numpy数组(可选)
counts = np.array(counts)
print(counts)

注意事项

  • 如果同一天有多个时段的UHII值都是最大值,np.argmax和list.index只会统计第一个出现的时段;如果需要统计所有符合条件的时段,可改用以下逻辑:
    counts = np.zeros(8, dtype=int)
    for row in uhii_data:
        max_val = np.max(row)
        # 找出所有等于最大值的索引
        indices = np.where(row == max_val)[0]
        for idx in indices:
            counts[idx] += 1
    
  • 结果数组的顺序严格对应你给出的时段:索引0→3 LST,索引1→6 LST,…,索引7→00 LST

内容的提问来源于stack exchange,提问作者Abeda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 00:05:21