在numpy中,如何创建复杂矩阵?

时间:2019-02-14 13:11:57

标签: python numpy matrix complex-numbers

在线

e[i][j][k]=np.divide(ftf[i][j][k],ftg[i][j][k])

在运行以下代码时

'''

                            Online Python Compiler.
                Code, Compile, Run and Debug python program online.
Write your code in this editor and press "Run" button to execute it.

'''
import numpy as np

f=np.zeros((2,2,2))
g=np.zeros((2,2,2))

f=np.add(f,1)
g=np.add(g,2)

for i in range(0,2):
    for j in range(0,2):
        for k in range(0,2):
            f[i][j][k] = (i+1)*(j+1)+(k+1)
            g[i][j][k] = (i+2)*(j+3)+(k+4)

ftf = np.fft.fftn(f)
ftg = np.fft.fftn(g)
print(f)
print(g)
print(ftf)
print(ftg)
print("------")
e =np.zeros((2,2,2))
for i in range(0,2):
    for j in range(0,2):
        for k in range(0,2):
            if np.isnan(ftg[i][j][k]):
                e[i][j][k]=0
            else:
                e[i][j][k]=np.divide(ftf[i][j][k],ftg[i][j][k])
print(e)
print("------")
h= np.fft.ifftn(e)

print(h)

返回错误:

  

/home/main.py:36:ComplexWarning:将复杂值转换为实数   丢弃虚部
  e [i] [j] [k] = np.divide(ftf [i] [j] [k],ftg [i] [j] [k])

我认为我必须将e创建为复杂的。如何创建一个以零为元素的复杂矩阵?

1 个答案:

答案 0 :(得分:1)

np.zeros中的dtype参数设置为complex

np.zeros((10,10), dtype=complex)

array([[0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j,
        0.+0.j, 0.+0.j],
       [0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j,
        0.+0.j, 0.+0.j],
       [0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j,
        0.+0.j, 0.+0.j],...