繁体   English   中英

如何在1度纬度的箱中对数据进行分组?

[英]how to group data in bins of 1 degree latitude?

我有一些地理数据(全局)作为数组:

  • 纬度:纬度=([34.5,34.2,67.8,-24,...])
  • 风速:u =([2.2,2.5,6,-3,-0.5,...])

我想说一下风速如何取决于纬度。 因此,我想将数据分类到1度的纬度分类中。

我如何计算哪些风速落在哪个箱中。 我读了有关pandas.groupby的文章。 那是一个选择吗?

numpy函数np.digitize执行此任务。

下面是一个将每个值分类到bin中的示例:

import numpy as np
import math

# Generate random lats
lats = np.arange(0,10) - 0.5
print("{:20s}: {}".format("Lats", lats))
# Lats                : [-0.5  0.5  1.5  2.5  3.5  4.5  5.5  6.5  7.5  8.5]

# Generate bins spaced by 1 from the minus to max values of lats
bins = np.arange(math.floor(lats.min()), math.ceil(lats.max()) +1, 1)
print("{:20s}: {}".format("Bins", bins))
# Bins                : [-1  0  1  2  3  4  5  6  7  8  9]

lats_bins = np.digitize(lats, bins)
print("{:20s}: {}".format("Lats in bins", lats_bins))
# Lats in bins        : [ 1  2  3  4  5  6  7  8  9 10]

正如@High Performance Mark在评论中所建议的那样,由于您希望以1度拆分箱,因此可以使用floor提取每个lats的下限(注意:如果存在负值,此方法将引入负索引箱):

lats_bins_floor = np.floor(lats)
# lats_bins_floor = lats_bins_floor + abs(min(lats_bins_floor))
print("{:20s}: {}".format("Lats in bins (floor)", lats_bins_floor))
# Lats in bins (floor): [-1.  0.  1.  2.  3.  4.  5.  6.  7.  8.]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM