使用python数组的列作为布尔值来更改另一列的值

时间:2016-02-05 17:07:48

标签: python arrays numpy boolean

我是python的新手,所以这可能就是为什么我无法在此网站中正确搜索我的问题的答案,以防有人知道它。

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

使用np.arctan计算角度,并根据XZ坐标所在的象限得到( - )或(+)符号。

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

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

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

np.where(cond, if_true, if_false)解决了您认为自己拥有的问题

fixed_angle = np.where(z > 0, angle, -angle)

实际拥有的问题是您没有使用atan2,或者它是拼写为numpy,np.arctan2