为了账号安全,请及时绑定邮箱和手机立即绑定

使用 python 从 csv 文件读取复数

使用 python 从 csv 文件读取复数

皈依舞 2023-07-11 14:08:02
我尝试编写 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”我无法正确修复这部分。谢谢。
查看完整描述

1 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

您可以为所有列指定转换器(有 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        ])


查看完整回答
反对 回复 2023-07-11
  • 1 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信