使用python数组';将列设为布尔值以更改另一列';s值

使用python数组';将列设为布尔值以更改另一列';s值,python,arrays,numpy,boolean,Python,Arrays,Numpy,Boolean,我对python非常陌生,所以这可能就是为什么我无法在这个网站上正确搜索我的问题的答案,以防有人已经知道了 我正在阅读由六列组成的几个数据文件:XYZ坐标和球体周围的3矢量分量。我使用X和Z坐标来查找向量的角度位置,并使用角度结果作为数组的新列,作为第四列。所以,我有一个7列数组 使用np.arctan计算角度,角度得到(-)或(+)符号,具体取决于XZ坐标所在的象限 现在,我想使球体上半部分周围的所有角度(Z正)都为正,范围从0º到180º。另一方面,我希望下半部分的角度为负,从0º到-180

我对python非常陌生,所以这可能就是为什么我无法在这个网站上正确搜索我的问题的答案,以防有人已经知道了

我正在阅读由六列组成的几个数据文件:XYZ坐标和球体周围的3矢量分量。我使用X和Z坐标来查找向量的角度位置,并使用角度结果作为数组的新列,作为第四列。所以,我有一个7列数组

使用np.arctan计算角度,角度得到(-)或(+)符号,具体取决于XZ坐标所在的象限

现在,我想使球体上半部分周围的所有角度(Z正)都为正,范围从0º到180º。另一方面,我希望下半部分的角度为负,从0º到-180º

更改标志和应用0º-180º范围的操作很容易实现。但是,我想使用数组的第三列(Z坐标)作为布尔值来决定如何更改角度(数组的第四列)。我已经阅读了很多关于切片数组的信息,或者基于应用于相同列/行的任意布尔条件修改列/行的信息

我试图避免将for循环和if语句组合在一起,并学习如何使用python的强大功能:)

提前谢谢

np.其中(cond,if\u true,if\u false)
解决了您认为存在的问题:


您实际遇到的问题是,您没有使用,或者按照numpy的说明,您应该使用
np.arctan2(a,b)
来代替
np.arctan2(a/b)
。我认为这可能会解决您的整个问题。如果您能够提供示例数据,以及您可能期望的输出,这可能会有所帮助。如果你有一些代码,那就更好了!谢谢你,埃里克,已经修好了!我想我需要更仔细地重读arctan2。Wayne,我认为没有必要发布我的数据。对此表示歉意,下次我会详细回答我的问题。谢谢你的详细回答Eric!多谢!我刚刚发现它还将我的角度范围转换为所需的角度范围。我在哪里可以为你的评论添加星星???
fixed_angle = np.where(z > 0, angle, -angle)