【发布时间】:2011-02-05 05:53:12
【问题描述】:
我有一个包含一个值的 1x1 矩阵。我只想要价值。
矩阵([[-0.16666667+0.66666667j]])
我想要那个矩阵中的复数。如何获得?
【问题讨论】:
我有一个包含一个值的 1x1 矩阵。我只想要价值。
矩阵([[-0.16666667+0.66666667j]])
我想要那个矩阵中的复数。如何获得?
【问题讨论】:
>>> 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 之间的符号差异。没有改变任何东西,但一旦我注意到它就无法忍受..]
【讨论】:
使用上面示例中的数据,以下 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()