Python:实数数组转化为复数数组

场景:

将两个实数数组A(代码中为data_Ax[3*i+1,:,:]),B (代码中为data_Ax[3*i+2,:,:])结合为一个复数数组C(代码中为complex_Ax[i,:,:])=A+Bj

complex_Ax=np.zeros((length_Ax,256,256))

for i in range(length_Ax-1):
    complex_Ax[i,:,:]=data_Ax[3*i+1,:,:]+data_Ax[3*i+2,:,:]*1j

问题描述:

Python报错复数转实数,虚部丢失

ComplexWarning: Casting complex values to real discards the imaginary part complex_Ax[i,:,:]=data_Ax[3*i+1,:,:]+data_Ax[3*i+2,:,:]*1j

原因:

np.zeros创建的数组是实数数组,data_Ax[3*i+1,:,:]+data_Ax[3*i+2,:,:]*1j 是复数数组,相当于将复数赋给实数,产生报错 


解决方案:

1、创建复数数组

complex_Ax=np.zeros((length_Ax,256,256))*1j

 或

complex_Ax=np.zeros((length_Ax,256,256),dtype=complex)

2、不预定义三维数组,直接赋值给新变量(新变量不会预设数的类型),仅适用于二维数组的转换

complex_Cor=data_Cor[1,:,:]+data_Cor[2,:,:]*1j

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值