我是python的新手,所以这可能就是为什么我无法在此网站中正确搜索我的问题的答案,以防有人知道它。
我正在阅读包含六列的几个数据文件:XYZ坐标和球体周围的3矢量分量。我使用X和Z坐标来查找矢量的角度位置,并将角度结果用作我的数组的新列,作为第四列。所以,我有一个7列数组。
使用np.arctan计算角度,并根据XZ坐标所在的象限得到( - )或(+)符号。
现在,我想让球体上半部分(Z正)的所有角度为正,并从0º到180º。另一方面,我希望下半部分的角度为负,从0º到-180º。
更改标志并应用0º-180º范围的操作易于实施。但是,我想使用我的数组的第三列(Z坐标)作为布尔值来决定如何更改角度(数组的第四列)。我已经阅读了很多关于切片数组的信息,或者根据应用于相同列/行的任意布尔条件修改列/行。
我试图避免组合for循环和if语句,并学习如何使用python的强大功能:)
提前致谢!
答案 0 :(得分:1)
np.where(cond, if_true, if_false)
解决了您认为自己拥有的问题:
fixed_angle = np.where(z > 0, angle, -angle)
您实际拥有的问题是您没有使用atan2
,或者它是拼写为numpy,np.arctan2