Python 大数组的If、else语句

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

我想在风玫瑰图(极玫瑰图)上绘制一些风速和方向的数据,但我正在使用的库(风玫瑰图)似乎不喜欢向它提供负风向。因此,我试图在所有负值上加上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_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给出了一个更全面的答案,因此应该被标记为被接受,但否决票是不行的。