猿问

使用 python 从 csv 文件读取复数

我尝试编写 ML 程序,但在从 csv 扩展数据集中读取复杂数据时遇到问题


   from numpy import genfromtxt, savetxt

   import numpy as np

   from keras.models import Sequential

   from keras.layers import Dense

   # load the dataset

   dataset = genfromtxt("C:/Users/username/Desktop/dataset/snr_10_tau_09/clear.csv", dtype=complex 

   ,delimiter=",")

   # split into input (X) and output (y) variables

   print(dataset[:])

我的输出是


[[ 1.+0.j  1.+0.j nan+0.j nan+0.j nan+0.j  1.+0.j]

[ 1.+0.j  1.+0.j nan+0.j nan+0.j nan+0.j  1.+0.j]

[ 1.+0.j  1.+0.j nan+0.j nan+0.j nan+0.j  1.+0.j]

...

[nan+0.j nan+0.j nan+0.j nan+0.j nan+0.j nan+0.j]]

我的数据的第一个原始示例:


1,1,-0.0681107934958098 - 0.321707498751689j,0.000400898877777433 + 

0.00114494815465579j,1.14287673226517 - 0.0363472573808049j,1

我不明白我的错误在哪里,在我的数据还是我的代码中?当我尝试打印我的数据时,它显示“nan+0.j”我无法正确修复这部分。谢谢。


皈依舞
浏览 161回答 1
1回答

红颜莎娜

您可以为所有列指定转换器(有 6 列,因此您需要那么多转换器函数):np.genfromtxt(    your_file_name,     delimiter=',',     dtype=np.complex,     converters={k: lambda x: np.complex(x.replace(b' ', b'').decode()) for k in range(5)})array([  1.00000000e+00+0.j        ,   1.00000000e+00+0.j        ,        -6.81107935e-02-0.3217075j ,   4.00898878e-04+0.00114495j,         1.14287673e+00-0.03634726j,   1.00000000e+00+0.j        ])
随时随地看视频慕课网APP

相关分类

Python
我要回答