【问题标题】:How can I use the "if" loop inside a function?如何在函数中使用“if”循环?
【发布时间】:2021-07-27 00:06:18
【问题描述】:

我创建了一个函数,它返回浮点类型的正角和负角。我想要做的是在函数内部创建一个“if”语句,我将能够在每个负值上添加 360 度,而正值将保持原样。实际上,该函数将返回一个数组,其中我们将添加 360 的所有负值。

还要记住,“za”变量是来自另一个函数的数组输入。我会给你一部分代码作为参考,以及执行 azimuth_zenith(za, lat, dec) 函数后的结果:

NPTSRC = 60
lat=-30.7215
dec = np.linspace(0, 90, NPTSRC)

# Azimuth calculation as a function of zenith angle
def azimuth_zenith(za, lat, dec):
    return np.arccos(np.sin(dec) - np.sin(za)*np.sin(lat))/(np.cos(za)*np.cos(lat))*180/np.pi

<ipython-input-33-7f401ef5875d>:3: RuntimeWarning: invalid value encountered in arccos
  return np.arccos(np.sin(dec) - np.sin(za)*np.sin(lat))/(np.cos(za)*np.cos(lat))*180/np.pi


array([  145.85139281,            nan,   157.21910259,            nan,
         163.433071  ,            nan,   516.81605872,            nan,
        -138.24088045,   349.94353713,  -332.53694854,            nan,
                  nan,            nan,            nan,            nan,
                  nan,    44.93813245,   -74.67242873,   230.00752261,
         175.72954699,            nan,            nan,            nan,
                  nan,   437.90927583,            nan, -1208.3420051 ,
                  nan,    86.67738103,            nan,  -156.84769435,
                  nan,  -504.64406287,            nan,   295.70813096,
                  nan,   152.11497124,            nan,  -124.51901853,
                  nan,   130.40918907,  -117.47838581,    60.8683529 ,
                  nan,  -217.09978828,            nan,   117.3825354 ,
                  nan,            nan,            nan,            nan,
                  nan,            nan,  -235.95740481,            nan,
         186.56132365,            nan,  -100.13272745,            nan])

【问题讨论】:

    标签: python function numpy loops if-statement


    【解决方案1】:

    在 NumPy 中通常不需要条件语句。选择要更新的值,然后更新它们:

    your_array[your_array < 0] += 360
    

    事实上,您的某些值小于 0,并且添加 360 不会修复它们。您必须计算修复它们需要多少“整圈”:

    adjustment = (your_array[your_array < 0] // 360) * 360
    your_array[your_array < 0] -= adjustment
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多