我有一组坐标列表[:,4]。它是天文坐标,我想将其转换为十进制。但是,它目前不适用于负天文坐标。我目前有:
if any(a[:,4] < 0 ):
b[:,1] = a[:,4] - a[:,5]/60 - a[:,6]/3600 - a[:,7]/360000
else:
b[:,1] = a[:,4] + a[:,5]/60 + a[:,6]/3600 + a[:,7]/360000
print b
这样做的目的是让它从a [:,4]坐标中识别坐标是否为负,然后如果是负数则以一种方式处理其他坐标,如果是正数则另一种方式处理。但是,“if any”行似乎不起作用。
例如,-09:24:40.25应转换为-9.41118,但它当前转换为-8.58882,因为负“小时”坐标随后添加了arcminute,arcsecond和milliarcsecond坐标,而不是它们被减去。
我不确定我做错了什么。
谢谢!
答案 0 :(得分:0)
你不能使用any
函数,假设你正在使用python列表,因为它需要一个iterable并且如果该iterable的任何一个为真,则返回true
a < 0
不会返回可迭代的
替换为
[i < 0 for i in a[:,4]]
或
map(lambda x: x < 0 ,a[:,4])
以便if语句变为
if any(map(lambda x: x < 0,a[:,4])):
或
if any([i < 0 for i in a[:,4]])