【问题标题】:Easy angle and point / Numpy简单的角度和点/ Numpy
【发布时间】:2012-09-14 10:49:21
【问题描述】:

我是 Numpy/Matplotlib(和科学 Python)的初学者,我发现非常简单的事情做起来相对复杂,因为它们必须手工完成。 (就像没有这个很棒的数学环境一样)

我认为至少有可能例如轻松获得两条相交线的角度。

我想做以下事情。我有这三点:

 (q)  |
  \   |
   \  |
    \a|
     \|
     (p)
      |
      |
      |
     (o)
  1. 我要做的就是计算角度 a。
  2. 稍后我想得到一个相对于原点 (0,0) 的点 z,它具有从 p 到 q 的距离和角度 a。

首先用数学很容易,首先我计算两个向量a1和a2。 然后我计算:

a = arccos( ( a1 * a2 ) / (|a1| * |a2|) )

等等……

但是我到底怎么在 matplotlib 中做到这一点呢?

有没有办法“只”给出三分并且它可以做所有事情? 我真的看不出在数学环境中独自完成所有这些事情有什么好处。

【问题讨论】:

  • matplotlib 是一个绘图库,不应该帮助您解决此类问题。但是,您可以使用 NumPy/SciPy,它确实提供了具有实现范数和标量产品等的特殊函数的向量类,也可能是角度函数。
  • 是的,很抱歉让您感到困惑。我参考了 MatplotLib,因为它是科学 python 的最高层,下面有 scipy-numpy-python。由于整个系统没有名称,我指的是使用上述框架的那部分。

标签: python numpy matplotlib scipy


【解决方案1】:

Numpy 提供与数学相同的功能,但同时适用于数字和数组。所以你会这样做:

import numpy as np

a = np.arccos((a1 * a2) / (np.abs(a1) * np.abs(a2)))

【讨论】:

  • 啊,谢谢!棒极了。我真的很想拥有一个将 Matplotlib/Scipy/Numpy 组合为一个整体数学系统的综合文档。
  • OP 寻找的公式是from numpy.linalg iport norm; from numpy import dot; np.arccos(dot(a1, a2) / (norm(a1) * norm(a2))
猜你喜欢
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
  • 2019-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 1970-01-01
相关资源
最近更新 更多