Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何设置与numpy';阿兰奇_Python_Python 3.x_Numpy - Fatal编程技术网

Python 如何设置与numpy';阿兰奇

Python 如何设置与numpy';阿兰奇,python,python-3.x,numpy,Python,Python 3.x,Numpy,我正在尝试在Flask应用程序中创建一个天气小部件。我被困在以度(角度)为单位的风向上 如果我们使用以下图像作为表示: 风向 在处理风向时,我们被限制在360度范围内。我想根据风向360度范围内的范围指定一个图标,以帮助您了解以下信息: | Cardinal Direction | Degree Direction | |:------------------:|------------------| | N | 348.75 - 11.25 | |

我正在尝试在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 |
我将把键/值存储在dict中,并创建一个if-elif-else循环,该循环将执行以下操作:

来自numpy import arange
度=响应['wind']['deg']
风向={
“N”:阿兰奇(348.75,11.25,0.25),
...
}
度范围=范围(0,360)
如果风向上的度数['N']:
方向=北向图标
风向['NNE']的elif度:
方向=北\北\东\图标
以上只是伪代码。。总而言之,我如何应用它,使我们只在360度范围内工作,因为很明显,它在处理北风方向时会抛出错误,因为它在348.75-11.25范围内,我们需要告诉它我们在处理360度


我一辈子都不能弄明白这一点的原因是我从未学过复杂的数学(对我来说这就是)。如果有人对我如何更好地应用这一点提出建议,我非常乐意接受这些建议。

这里有一个想法:您可以检查学位范围的上限是否低于下限,然后通过两步程序创建
arange
。例如:
348.75,11.25
是上限
11.25
小于下限
348.75
的唯一情况,这意味着由于周期性,
360
介于两者之间。对于所有其他度数范围和方向,上限大于下限。因此,您可以创建
N
,在一个范围中包含
360
,在另一个范围中包含其余值

x = np.arange( 348.75, 360, 0.25) 
y = np.arange(0.25, 11.25, 0.25) 
'N' = np.concatenate((x ,y), axis=0)

只是一个想法,也许你可以改进它

若要将任何数字包装到特定范围,请使用模(
%
):。幸运的是,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减半。如果你有不相等的箱子,最好的办法是使用模来规范化你的输入,然后在箱子边缘进行二元搜索。

模运算符?你为什么要使用
arange
?@MadPhysician我使用arange,所以我可以使用一系列的浮点,步长为0.25..@MadPhysician你愿意详细说明你的评论吗?@JamieLindsey,以确保我正确理解你:给定范围内的学位[0360]你想根据表格给它指定一个基本的方向,对吗?老实说,我不明白逻辑。。这使得指数值等于0、1和2,小数点位于错误的位置-例如
数组([3.4875e+02,3.4900e+02,3.4925e+02,3.4950e+02
…也许我应该编辑我的问题,让大家知道我不是100以上数值的最佳数学家,指数为2,两位数为1,一位数为0。这只是表示法。3e+02和300表示相同的东西你的方程式还不在我的能力范围内,a我一点也不知道你是什么意思lol.MadPhysicast提供了一个完美的工作示例,我理解。谢谢你的努力,尽管我很感激。先生,你是个天才!我正在思考
deg_to_point()
function来学习如何做更多类似的事情。非常感谢!我想我实际上理解了这一点,这在数学中通常不是这样的。答案标记为已接受。@Jamie。你尽你所能。很高兴它帮助你理解了。所以当我收到你答案的通知时,我正在阅读a。。