У меня есть две серии панд plg
и trd
, которые я превратил в списки и которые содержат целые числа.
Я хочу создать расчет коррекции для plg
и trd
, когда plg
отрицательно, однако я не уверен, как подойти к этому с помощью списочных представлений.
Я пробовал:
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 (), поскольку это список. Нужно ли мне просто добавить еще один индекс enumerate () для списка, созданного Zero ()?
Я могу исправить это, заключив аргумент 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]