如何计算“ComplexWarning:将复数转换为实数会丢弃虚部”?

Xia*_*shu 8 python numpy

我想使用具有复杂条目的矩阵来构造一个新矩阵,但它给了我警告

“ComplexWarning:将复数转换为实数会丢弃虚部”。

结果,新矩阵的条目都是实数。如何让所有条目都保留其虚部?

这是包含我的原始代码的图像

这是包含我的原始代码的图像

Xia*_*shu 10

我知道我在哪里发出这个警告。

当我构造一个新的空矩阵时,我需要添加 dtype = "complex_"。

例如,

mat__ = np.zeros((k*nboxes,k*nboxes),dtype = 'complex_')
Run Code Online (Sandbox Code Playgroud)

如果我们只写

mat__ = np.zeros((k*nboxes,k*nboxes))
Run Code Online (Sandbox Code Playgroud)

并对其进行一些操作,例如使用复矩阵形成新矩阵,然后新矩阵将丢弃虚部。


Hoo*_*oog 0

您可以尝试使用 numpy 通过数组构造函数从 Matrix_1 创建一个新矩阵。这样您就可以指定您正在使用复数和dtype. 像这样的事情应该可以解决问题:

mat_ = np.array(matrix_1[:,ll,ll,:],dtype = "complex_")

我用来确保的一些测试:

import numpy as np

abc = np.array([[1+1j,2+2j,3+3j],[4+4j,5+5j,6+6j],[7+7j,8+8j,9+9j]],dtype = "complex_") # initial
print(abc)
abc2 = np.array(abc[1:,:1],dtype = "complex_") # post transformation
print(abc2)
Run Code Online (Sandbox Code Playgroud)