【问题标题】:Python Numpy Matrix - Return the value contained in the matrix?Python Numpy Matrix - 返回矩阵中包含的值?
【发布时间】:2011-02-05 05:53:12
【问题描述】:

我有一个包含一个值的 1x1 矩阵。我只想要价值。

矩阵([[-0.16666667+0.66666667j]])

我想要那个矩阵中的复数。如何获得?

【问题讨论】:

    标签: python matrix numpy


    【解决方案1】:
    >>> m = matrix([[-1.0/6 + (2.0j/3)]])
    >>> m
    matrix([[-0.16666667+0.66666667j]])
    >>> m.shape
    (1, 1)
    >>> m[0,0]
    (-0.16666666666666666+0.66666666666666663j)
    >>> m[(0,0)]
    (-0.16666666666666666+0.66666666666666663j)
    

    或者,当我们这样做的时候:

    >>> m.tolist()[0][0] # seldom useful, though
    (-0.16666666666666666+0.6666666666666666j)
    >>> m.flat[0]  # more frequently useful
    (-0.16666666666666666+0.66666666666666663j)
    

    要让 OP 相信上面其实是一个复数 :^) --

    >>> m[(0,0)]
    (-0.16666666666666666+0.66666666666666663j)
    >>> type(m[(0,0)])
    <type 'numpy.complex128'>
    >>> x = m[(0,0)]
    >>> x + 3
    (2.8333333333333335+0.66666666666666663j)
    >>> abs(x)
    0.68718427093627676
    >>> x.real
    -0.16666666666666666
    >>> x.imag
    0.66666666666666663
    

    [已编辑以纠正我的号码和 OP 之间的符号差异。没有改变任何东西,但一旦我注意到它就无法忍受..]

    【讨论】:

    • 看起来括号中的术语仍然不是数字。关于如何提取它的任何想法?
    【解决方案2】:

    使用上面示例中的数据,以下 Python sn-p 似乎也可以工作。

    import numpy
    
    m = numpy.matrix([[-0.16666667+0.66666667j]])
    
    print m.item(0)
    
    # the result of running the above is 
    (-0.16666667+0.66666667j)
    

    【讨论】:

    • 请注意,由于矩阵只有一个元素,因此不需要参数0,您可以简单地使用m.item()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    相关资源
    最近更新 更多