【问题标题】:Python - find average of two complex coordinatesPython - 找到两个复杂坐标的平均值
【发布时间】:2019-06-18 12:58:55
【问题描述】:

给定一组坐标,如何求平均值?

ip = [[100.0 - 11.3*I, 82.8], [100.0 + 11.3*I, 82.8]]

最终的结果应该是复数的情况,

op = ((100.0 - 11.3*I + 100.0 + 11.3*I)/2 , (82.8 + 82.8)/2))
op = (100, 82.8)

【问题讨论】:

    标签: python-3.x sympy centroid


    【解决方案1】:

    首先,要创建复数值,请使用jJ 作为虚数单位(与大多数数学书籍中的i 相反)并将其放在数值后面,不使用* 运算符:

    >>> z = 3 + 4j
    >>> z
    (3+4j)
    

    然后您可以对其执行通常的数学运算:

    >>> abs(z)
    5.0
    >>> z**2
    (-7+24j)
    

    以及仅从cmath module in the standard library 为复数定义的那些。

    对于两个复值二维向量的输入,正确的语法是:

    ip = [[100.0 - 11.3j, 82.8], [100.0 + 11.3j, 82.8]]
    

    您可以直接索引该列表以获取各个组件并添加它们:

    >>> (ip[0][0] + ip[1][0])/2
    (100+0j)
    

    虽然计算平均值的更简单方法是使用 numpy math library 中的数组函数 .mean

    >>> import numpy
    >>> ip = numpy.array(ip)
    >>> ip.mean(axis=0)
    array([100. +0.j,  82.8+0.j])
    

    【讨论】:

      【解决方案2】:

      在 SymPy 中,向量运算可以使用矩阵紧凑地编写:

      >>> ip = [[100.0 - 11.3*I, 82.8], [100.0 + 11.3*I, 82.8]]
      >>> a,b=map(Matrix, ip)
      >>> (a+b)/2
      Matrix([
      [100.0],
      [ 82.8]])
      >>> list(_)
      [100.0, 82.8]
      

      【讨论】:

        猜你喜欢
        • 2020-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-08
        • 2017-09-29
        • 2021-02-12
        相关资源
        最近更新 更多