Numpy:将复杂的NumPy数组转换为实部和虚部(n, 2)数组

Numpy:将复杂的NumPy数组转换为实部和虚部(n, 2)数组

在本文中,我们将介绍如何将复杂的NumPy数组转换为实部和虚部(n, 2)数组。复杂的NumPy数组是由实部和虚部组成的单一数组。拥有实部和虚部分开的(n, 2)形式意味着实现更加复杂的数学计算和操作,便于观察和处理。

阅读更多:Numpy 教程

什么是复杂的NumPy数组?

复杂数可以表示为具有实部和虚部的数a + bj,其中a和b分别是实部和虚部,i是虚数单位。同样,复杂的NumPy数组由实部和虚部(或成分)组成的数组构成。

import numpy as np

# 创建一个随机的3x3复杂的NumPy数组
arr = np.random.random((3, 3)) + 1j * np.random.random((3, 3))
print(arr)
Python

输出

array([[0.69422348+0.95670813j, 0.50258004+0.64042654j, 0.18661682+0.81062733j],
       [0.13618643+0.54722851j, 0.16577084+0.83980185j, 0.72644842+0.40713848j],
       [0.4352692 +0.96657314j, 0.27005636+0.13755601j, 0.94831702+0.76573993j]])
Python

上面的代码创建一个随机的3×3复杂的NumPy数组,每个元素都具有实部和虚部。

如何将复杂的NumPy数组转化为实部和虚部(或成分)数组?

要将复杂的NumPy数组转换为实部和虚部数组,请使用np.real()np.imag()函数。

import numpy as np

# 创建一个随机的3x3复杂的NumPy数组
arr = np.random.random((3, 3)) + 1j * np.random.random((3, 3))
print("原始数组:")
print(arr)

# 将复杂数组分离为实数和虚数
real_arr = np.real(arr)
imag_arr = np.imag(arr)

# 拼接实部和虚部数组并显示
new_arr = np.column_stack((real_arr, imag_arr))
print("分离后的数组:")
print(new_arr)
Python

输出:

原始数组:
array([[0.36342398+0.79048428j, 0.9908391 +0.34540467j, 0.03409103+0.14933174j],
       [0.41453022+0.16318664j, 0.31400177+0.03226114j, 0.88141547+0.89994273j],
       [0.22542222+0.83607902j, 0.00295702+0.01274807j, 0.10071946+0.00631326j]])
分离后的数组:
array([[0.36342398, 0.79048428, 0.9908391 , 0.34540467, 0.03409103, 0.14933174],
       [0.41453022, 0.16318664, 0.31400177, 0.03226114, 0.88141547, 0.89994273],
       [0.22542222, 0.83607902, 0.00295702, 0.01274807, 0.10071946, 0.00631326]])
Python

在上面的例子中,我们使用了np.real()函数和np.imag()函数将复杂的NumPy数组分解成实数和虚数数组。然后使用np.column_stack()函数将实数和虚数数组沿列方向连接成一个(n, 2)的新数组。因此,我们现在可以通过新数组中的第一列和第二列来分别访问原始数组中的实部和虚部。

如何进行复杂数的计算?

有了实部和虚部分开的数组,我们可以很容易地进行复杂数的加、减、乘和除等计算。以下是一些计算复杂数的示例:

import numpy as np

# 创建两个随机的3x3复杂的NumPy数组
arr1 = np.random.random((3, 3)) + 1j * np.random.random((3, 3))
arr2 = np.random.random((3, 3)) + 1j * np.random.random((3, 3))

# 加法操作:将两个数组的对应元素相加
add_arr = arr1 + arr2

# 减法操作:将两个数组的对应元素相减
sub_arr = arr1 - arr2

# 乘法操作:将两个数组的对应元素相乘
mult_arr = arr1 * arr2

# 除法操作:将两个数组的对应元素相除
div_arr = arr1 / arr2

print("数组1:\n", arr1)
print("数组2:\n", arr2)
print("加法:\n", add_arr)
print("减法:\n", sub_arr)
print("乘法:\n", mult_arr)
print("除法:\n", div_arr)
Python

输出:

数组1
 [[0.26169581+0.01180148j 0.63171666+0.47901579j 0.18315068+0.1759351j ]
 [0.52709825+0.12507045j 0.29043328+0.77845489j 0.54032958+0.97544459j]
 [0.88453662+0.47096594j 0.64610521+0.00434709j 0.5173936 +0.0498778j ]]
数组2
 [[0.7442266 +0.03049347j 0.05886872+0.56503456j 0.85697815+0.74062754j]
 [0.66776978+0.54939105j 0.1095826 +0.2406014j  0.42920601+0.18017157j]
 [0.19442589+0.17482654j 0.07189988+0.53566314j 0.36009081+0.68590229j]]
加法:
 [[1.00592241+0.04229495j 0.69058538+1.04405035j 1.04012883+0.91656264j]
 [1.19486702+0.6744615j 0.39901589+1.01905629j 0.96953559+1.15561617j]
 [1.07996252+0.64579248j 0.71800509+0.54001023j 0.8774844 +0.73578009j]]
减法:
 [[-0.48253079-0.01869199j  0.57284794-0.08601877j -0.67382747-0.56469244j]
 [-0.14067128-0.4243206j   0.18085068+0.53785349j  0.11112358+0.79527302j]
 [ 0.69011073+0.2961394j   0.57420534-0.53131605j  0.15730278-0.63602449j]]
乘法:
 [[0.11649126+0.0101963j  0.40641481+0.31676121j 0.1144259 +0.22047765j]
 [0.35185779+0.26008392j 0.03177725+0.18722203j 0.23212766+0.42655116j]
 [0.17308999+0.26943848j 0.02084536+0.03888075j 0.18604779+0.22652571j]]
除法:
 [[0.3507379 -0.01152483j 0.29810345-0.10929652j 0.21385386-0.02552621j]
 [0.79013183+0.31352992j 2.65112144+1.3824438j  1.25880533+2.52925504j]
 [4.54327019-1.22571367j 8.98549852-0.35976665j 1.43705546-0.61473638j]]
Python

在上面的示例中,我们首先创建了两个随机的3×3复杂的NumPy数组。然后,通过将这些数组相加、相减、相乘以及相除,我们可以得到对应的实部和虚部数组,进而得出相应的结果。

总结

在本文中,我们介绍了如何将NumPy中的复杂数组转换为实部和虚部分离的数组。我们还展示了如何使用这些数组来进行复杂数学计算。掌握这些技巧可以快速提高NumPy中对于复杂数组计算的应用能力。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册