回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有两个熊猫系列<code>plg</code>和<code>trd</code>,我把它们变成了列表并包含整数。
当<code>plg</code>为负时,我想为<code>plg</code>和<code>trd</code>创建一个校正计算,但是我不确定如何用列表理解来处理这个问题。你知道吗</p>
<p>我试过:</p>
<pre><code> plg = [ 1.3962634 , 1.57079633, -0.52359878, 0.61086524, 0.83775804,
0.17453293, 1.36135682, 1.43116999, 1.57079633, 1.57079633]
trd = [2.0943951 , 2.86233997, 9.8087504 , 4.71238898, 5.41052068,
1.13446401, 2.18166156, 2.12930169, 2.77507351, 2.91469985]
Zero = def ZeroTwoPi(a):
"""
Zero constrains azimuth to lie between 0 and 2*pi RADIANS.
Returns azimuth b (from 0 to 2*pi) for input azimuth a.
NOTE: Azimuths a and b are input/output in radians.
"""
b = a;
twopi = 2.0*np.pi
x = [b + twopi if b < 0 else b - twopi if b>= twopi else b for b in a]
return x
plg_up = [-i if i < 0.0 else i for i in plg ]
trd_up = [Zero(i - np.pi) if plg[index] < 0 else i for index,i in enumerate(trd)]
</code></pre>
<p><code>plg</code>返回正确,3元素返回正数,但“trd\u up”似乎不能遍历Zero()函数,因为它是一个列表。我是否只需要为Zero()创建的列表添加另一个enumerate()索引?你知道吗</p>
<p>我可以通过在列表中包含Zero()的参数来解决这个问题:</p>
<pre><code>trd_up = [Zero([i - np.pi]) if plg[index] < 0 else i for index,i in enumerate(trd)]
</code></pre>
<p>但这会返回一个列表中的列表:</p>
<pre><code>[2.0943951023931953,
2.8623399732707,
[0.3839724354387517],
4.71238898038469,
5.410520681182422,
1.1344640137963142,
2.1816615649929116,
2.129301687433082,
2.775073510670984,
2.9146998508305306]
</code></pre>