在线
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创建为复杂的。如何创建一个以零为元素的复杂矩阵?
答案 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],...