将由两列纯(?)double组成的文件读入一个复杂的NumPy数组
以下人员提出了几乎相同的问题:将由两列纯(?)double组成的文件读入一个复杂的NumPy数组,numpy,Numpy,以下人员提出了几乎相同的问题: data = np.loadtxt("./example", dtype=np.float64, delimiter='\t') complexData = data.T[0] + 1j*data.T[1] 然而,上述涉及的输入格式(例如括号)与本文中的文件内容稍有不同 考虑一个名为example的文件,其中包含两列纯(?)double: 0.8355544313622164 0 1.199174279986189 0 1.41727529221
data = np.loadtxt("./example", dtype=np.float64, delimiter='\t')
complexData = data.T[0] + 1j*data.T[1]
然而,上述涉及的输入格式(例如括号)与本文中的文件内容稍有不同
考虑一个名为
example
的文件,其中包含两列纯(?)double:
0.8355544313622164 0
1.199174279986189 0
1.417275292218002 0
我能够通过执行以下操作生成np.complex64
的numpy数组
:
data = np.loadtxt("./example", dtype=np.float64, delimiter='\t')
complexData = data.T[0] + 1j*data.T[1]
打印complexData
现在提供:
[ 0.83555443+0.j 1.19917428+0.j 1.41727529+0.j ... ]
是否有可能将上述方法简化为更整洁的方法
例如,将数据类型更改为
np.complex64
会引发TypeError
:
data = np.loadtxt("./example", dtype=np.complex64, delimiter='\t')
而不是使用
complexData = data.T[0] + 1j*data.T[1]
您可以创建数据的复杂视图:
complexData = data.view(np.complex128)
然后data
和complexData
共享浮点数的底层数组,但complexData
将这些值解释为复数
complexData
将是一个具有形状(n,1)的数组。要摆脱无关的第二维度,可以使用
complexData = data.view(np.complex128)[:, 0]
您可以在读取数据后立即进行转换。例如,我的名为“real.txt”
的示例文件是
0.8355544313622164 0
1.199174279986189 0
1.417275292218002 0
3.141592653589793 -1
而且它不是制表符分隔的,所以我将使用默认分隔符。要读取复杂的数据,请执行以下操作:
In [18]: z = np.loadtxt('real.txt').view(np.complex128)[:, 0]
In [19]: z
Out[19]: array([0.83555443+0.j, 1.19917428+0.j, 1.41727529+0.j, 3.14159265-1.j])