【PYthon报错】np.complex128数字的虚数部分为0j

2019-01-09 02:37 

版权声明:非技术文章禁止转载,如有需要请私信作者。技术类文章欢迎转载,转载请注明出处: http://blog.csdn.net/ztf312/ https://blog.csdn.net/ztf312/article/details/77793717


问题1:

我有一个类型为“np.complex128”的数组,但是复数部分等于0。怎样才能提取虚数的实数部分?

此外,我想做scipy加法,但是不清楚如何进行np.complex128类型数据的的合并。

解决:

如果是numpy数组,直接调用.real属性(虚部调用.imag属性):

In [59]: a = np.array([1+0j, 2+0j, -1+0j])
In [60]: a
Out[60]: array([ 1.+0.j,  2.+0.j, -1.+0.j])


In [61]: a.real
Out[61]: array([ 1.,  2., -1.])

如果列表是python列表,则采用以下方法:

In [64]: l
Out[64]: [(1+0j), (2+0j), (-1+0j)]
In [67]: [c.real for c in l]
Out[67]: [1.0, 2.0, -1.0]

译文地址问题2:为什么numpy 计算特征值出现复数? 

可能1:在求特征根的某一步出现了复数

>>> d = exp(c*1j)
>>> d
array([ 0.54030231+0.84147098j, -0.84147098+0.54030231j,
       -0.54030231-0.84147098j])
>>> d.dtype.name
'complex128' 许多非数组运算,如计算数组所有元素之和,被作为ndarray类的方法实现

可能2:数组类型定义为complex

>>> c = array( [ [1,2], [3,4] ], dtype=complex )
>>> c
array([[ 1.+0.j,  2.+0.j],
       [ 3.+0.j,  4.+0.j]]) 

实数与虚数的对应:

self.tdict = { float32: 1e-6, float64: 1e-14,
               complex64: 1e-6, complex128: 1e-14}

发表评论

您必须 登录 才能发表留言!