Python 大数组的If、else语句
我想在风玫瑰图(极玫瑰图)上绘制一些风速和方向的数据,但我正在使用的库(风玫瑰图)似乎不喜欢向它提供负风向。因此,我试图在所有负值上加上360度,认为它应该绘制。我尝试了本文中所示的方法,但我的数组中仍然有大量的负数Python 大数组的If、else语句,python,arrays,list,numpy,list-comprehension,Python,Arrays,List,Numpy,List Comprehension,我想在风玫瑰图(极玫瑰图)上绘制一些风速和方向的数据,但我正在使用的库(风玫瑰图)似乎不喜欢向它提供负风向。因此,我试图在所有负值上加上360度,认为它应该绘制。我尝试了本文中所示的方法,但我的数组中仍然有大量的负数 wind_speed=np.sqrt(u**2+v**2) wind_dir_calc=np.arctan(v/u) wind_dir=np.degrees(wind_dir_calc) [x+360 if x<0 else x+0 for x in wind_di
wind_speed=np.sqrt(u**2+v**2)
wind_dir_calc=np.arctan(v/u)
wind_dir=np.degrees(wind_dir_calc)
[x+360 if x<0 else x+0 for x in wind_dir]
np.set_printoptions(threshold=np.inf)
print(wind_dir)
Sample output:
[-6.34019175 84.6607632 -58.73626831 55.40771131 73.87242417
66.70543675 48.0127875 50.71059314 52.27500496 38.15722659
37.50414236 48.14495746 -2.20259816 16.53483786 38.75162833
19.0466243 -58.67130713 -63.00416161 -65.41842552 -74.96956948
-74.23281746 -68.36911316 -46.46880071 -83.26398879 -80.75388725...]
风速=np.sqrt(u**2+v**2)
风方向计算=np.arctan(v/u)
风向=np度(风向计算)
[x+360如果x在许多情况下,对数组使用布尔索引掩码是最好的解决方案,因为它比理解更快、更容易。这是矢量化的,因此是最快、最具python/numpy风格的:
wind_dir[wind_dir < 0] += 360
wind\u dir[风向方向<0]+=360
在许多情况下,对数组使用布尔索引掩码是最好的解决方案,因为它比理解更快、更容易。这是矢量化的,因此是最快、最具python/numpy风格的:
wind_dir[wind_dir < 0] += 360
wind\u dir[风向方向<0]+=360
您的逻辑是正确的。您只需要将列表理解分配给变量。列表理解不是就地操作。例如:
wind_dir = [x+360 if x<0 else x+0 for x in wind_dir]
您的逻辑是正确的。您只需要将列表理解分配给变量。列表理解不是就地操作。例如:
wind_dir = [x+360 if x<0 else x+0 for x in wind_dir]
wind\u dir.min()
,你看到了什么?-90.0。这对我来说意味着一股正南风(从北到南的风)。不,我没有看到,这似乎已经解决了问题。非常简单,谢谢。@EliTurasky你也可以投票/标记对你有帮助的答案。:)你看到了wind\u dir.min()什么
?-90.0。这对我来说意味着正南风(从北向南的风)。不,我没有,这似乎已经解决了问题。非常简单,谢谢。@EliTurasky您也可以投票/标记帮助您的答案。:)为什么要创建一个新数组?这是一个非常缓慢的操作,尤其是对于大型数组。@Scotty1-,我并没有要求您这样做。但是对于更复杂的任务,这是一个选项,对于新任务来说是个好主意用户可以看到不同的方法。事实上,我的回答是我推荐一种就地方法……好的,我同意。:)你为什么要创建一个新的阵列?这是一个非常缓慢的操作,尤其是对于大型阵列。@Scotty1-,我并没有说你应该这样做。但是对于更复杂的任务,这是一个选择,对于新用户来说,看到不同的方法是一个好主意。我ndeed,我的回答是我建议一个适当的地方…好吧,我同意。:)哈?我为什么他妈的得到了否决票?我的回答是正确的,而且是第一个答案。我同意jpp发布了一个更全面的答案,因此应该被标记为被接受,但否决票是不好的。哈?我为什么他妈的得到否决票?我的答案是正确的,不是他给出了第一个答案。我同意jpp给出了一个更全面的答案,因此应该被标记为被接受,但否决票是不行的。