我有两个熊猫系列plg
和trd
我已经变成了列表和包含整数。我想创建一个校正计算plg
和trd
时plg
为负但是我不能确定如何使用list包容接近这个。
我试过了:
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)]
plg
返回正确,3元素返回正数,但是`trd_up'似乎无法遍历Zero()函数,因为它是一个列表。我是否只需要为Zero()创建的列表添加另一个enumerate()索引?
我可以通过将Zero()的参数包含在列表中来对此进行修复:
trd_up = [Zero([i - np.pi]) if plg[index] < 0 else i for index,i in enumerate(trd)]
但这会返回列表中的列表:
[2.0943951023931953,
2.8623399732707,
[0.3839724354387517],
4.71238898038469,
5.410520681182422,
1.1344640137963142,
2.1816615649929116,
2.129301687433082,
2.775073510670984,
2.9146998508305306]
如其他答案中所建议,您可以使用enumerate
从中访问具有相同索引的元素plg
。另外,对于第一个列表,您可以使用abs
内置功能。
plg_up = [abs(x) for x in plg]
trd_up = [x - np.pi if plg[i] < 0 else x for i, x in enumerate(trd)]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句