python - 如何设置范围以使用 numpy 的范围
问题描述
我正在尝试在 Flask 应用程序中创建天气小部件。我坚持以度(角度)为单位处理风向。
如果我们使用下图作为表示:
风向
在处理风向时,我们被限制在 360 度范围内。我想根据风向在 360 度内的哪个范围分配一个图标,以帮助您了解以下信息:
| Cardinal Direction | Degree Direction |
|:------------------:|------------------|
| N | 348.75 - 11.25 |
| NNE | 11.25 - 33.75 |
| NE | 33.75 - 56.25 |
| ENE | 56.25 - 78.75 |
| E | 78.75 - 101.25 |
| ESE | 101.25 - 123.75 |
| SE | 123.75 - 146.25 |
| SSE | 146.25 - 168.75 |
| S | 168.75 - 191.25 |
| SSW | 191.25 - 213.75 |
| SW | 213.75 - 236.25 |
| WSW | 236.25 - 258.75 |
| W | 258.75 - 281.25 |
| WNW | 281.25 - 303.75 |
| NW | 303.75 - 326.25 |
| NNW | 326.25 - 348.75 |
我会将键/值存储在字典中并创建一个 if elif else 循环,该循环将执行以下操作:
from numpy import arange
degrees = the_json_response['wind']['deg']
wind_directions = {
'N': arange(348.75, 11.25, 0.25),
...
}
degrees_range = range(0, 360)
if degrees in wind_direction['N']:
dirction = north_icon
elif degrees in wind_direction['NNE']:
direction = north_north_east_icon
以上只是伪代码.. 总而言之,我如何应用它以便我们只使用 360 度范围,因为显然它在使用北风向时会抛出错误,因为它在 348.75 - 11.25 的范围内,我们需要告诉它我们正在使用 360 度。
我不能为我的数字生活的原因是我从来没有学过复杂的数学(对我来说就是这样)。如果有人对我如何以更好的方式应用它有任何建议,我非常愿意接受这些建议。
解决方案
要将任何数字包装到特定范围,请使用模 ( %
):% 如何在 Python 中工作?. 幸运的是,python 实现使结果的符号始终等于右手操作数。以下是模数如何将所有内容包装到所需范围的一些示例:
>>> 45 % 360
45
>>> -38 % 360
322
>>> 1000 % 360
280
鉴于此,很容易将任何度值映射到字母缩写。每个缩写代表一个 22.5 度宽的窗口。窗口从零偏移 11.25 度,所以我们可以通过做得到一个窗口索引
from math import floor
index = floor(((deg + 11.25) % 360) / 22.5)
该索引将始终是 0 到 15 之间的数字。您可以直接使用它来索引指南针的点列表,而无需任何字典或昂贵的搜索:
list_of_points = ['N', 'NNE', 'NE', ..., 'NW', 'NNW']
def deg_to_point(deg):
return list_of_points[floor(((deg + 11.25) % 360) / 22.5)]
这是有效的,因为你所有的垃圾箱都是相同的大小。例如,如果您想要罗盘上的更多点,您可以将 11.25 和 22.5 减半。如果你有不相等的 bin,你最好的办法是使用模对你的输入进行标准化,然后在 bin 边缘进行二进制搜索。
推荐阅读
- python - Python - Pd.dataframe - sum(step, []) - “只能将列表(不是“str”)连接到列表”
- ruby-on-rails - 在 Rails 上创建新应用程序时出现语法错误,我该如何解决?
- python - 如何将两个排序列表合并到一个排序列表中
- css - 当我向上滚动 jumbotron 时,导航应该停留在左上角。我怎样才能做到这一点?
- iis-10 - IIS Set-Cookie 重写规则问题
- google-maps - 我可以同时实现谷歌地图和 Mapbox 吗?
- arduino - 是否可以从页面索引中获取值?
- xml - XPath 表达式只获取所有属性的值
- java - 如何在使用 JPA 持久化的同时将 PrimaryKey 的值(使用序列生成)分配给另一个变量?
- r - 如何计算R中表中的实例