【发布时间】:2016-05-15 18:12:24
【问题描述】:
我对 python 非常陌生,所以这可能就是为什么我无法在此站点中正确搜索我的问题的答案,以防有人已经知道它。
我正在读取几个包含六列的数据文件:XYZ 坐标和球体周围的 3 向量分量。我正在使用 X 和 Z 坐标来查找我的向量的角度位置,并将角度结果用作我的数组的新列,作为第四列。所以,我有一个 7 列数组。
使用 np.arctan 计算角度,根据 XZ 坐标所在的象限,它们得到 (-) 或 (+) 符号。
现在,我想让球体上半部分(Z 正)周围的所有角度都为正,并且范围从 0º 到 180º。另一方面,我希望下半部分的角度为负,从 0º 到 -180º。
更改符号和应用 0º-180º 范围的操作很容易实现。但是,我想使用数组的第三列(Z 坐标)作为布尔值来决定如何更改角度(数组的第四列)。我已经阅读了很多关于切片数组或根据应用于相同列/行的任意布尔条件修改列/行的信息。
我试图避免组合 for 循环和 if 语句,并学习如何使用 python 的强大功能:)
提前致谢!
【问题讨论】:
-
您应该使用
np.arctan2(a, b)代替np.arctan(a/b)。我认为这可能会解决您的整个问题 -
如果您可以提供示例数据以及您可能期望的输出结果,这可能会有所帮助。如果你有一些代码,那就更好了!
-
谢谢 Eric,已经解决了!我想我需要更仔细地重新阅读有关 arctan2 的内容。
-
韦恩,我认为没有必要发布我的大量数据。对此深表歉意,下次我的问题会更加彻底。
标签: python arrays numpy boolean