将带有数组的列表从csv文件转换为float

2024-04-26 13:16:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个csv文件与各种参数的加速度计和陀螺数据的样本列表。数组(MAD,和float zcr)包含值。当我读回它时,它们作为字符串返回,对于我的处理,我需要数字(int/float)。 我试过了

    results = map(int, results)

以及

^{pr2}$

我从here得到它们,但数组有问题。在

Traceback (most recent call last):
 File "/home/pi/Desktop/imu/mpu_v16.py", line 458, in <module>
  main()
 File "/home/pi/Desktop/imu/mpu_v16.py", line 439, in main
  compare()
 File "/home/pi/Desktop/imu/mpu_v16.py", line 305, in compare
  nrow = [float(i) for i in nrow]
ValueError: could not convert string to float: [ 53  73  79 139]

我怎么解决这个问题?在

我正在添加我的数据示例:

    C,3.3440452548950501e-17,0.99999999999999645,0.89244290726827058,1.7947499048650259,3.3651560716219242,[108 123 149 220 235],0.99999999999999822,110223.99999999971,331.99999999999915,-5.9524005537131887e-17,0.99999999999999989,0.81051947660768831,1.4756039753111405,4.4268119259334213,[103 122 160 205 212],0.99999999999999989,110224.00000000001,332.00000000000006,-6.4540073419474463e-17,0.999999999999999,0.74198651253618131,0.63512619216067612,4.256170326687128,[106 164 192 226],0.99999999999999933,110224.00000000001,332.00000000000006,2.083131190971185e-16,1.0000000000000009,0.66659374901400581,0.52759419283475883,4.5104130995285256,[  7  14  45  56 150 327],1.0000000000000002,110223.99999999994,331.99999999999983,-3.0890618042093025e-17,0.99999999999999667,0.58289607514346964,0.21669963911591134,4.7919240951669444,[ 82 149 208],0.99999999999999822,110223.99999999942,331.99999999999824,-3.2771643497971487e-16,1.0000000000000009,0.58746356061392535,0.29681486739557372,5.2741718744905794,[ 26  48  59  66 114 171 231 242],1.0000000000000002,110224.00000000036,332.00000000000108,-0.57536274345915739,0.147595080030029,0.13018399571123057

Tags: 数据inpyhomelinepi数组float
2条回答

因为您的输入由浮点字符串和数组字符串组成,所以需要一种区分这两者的方法。一种方法是检查字符串是否有空格?然后,对于float字符串,只需像以前一样使用float(i)。然后对于数组字符串,尝试在空格上拆分以分隔数组元素,然后对每个单独的字符串float(convert a string to an array)运行float。在

任意浮点输入:"54.6"
检查空格:False
电话:float("54.6")

任意数组输入:"[ 53 73 79 139]"
检查空格:True
删除方括号:" 53 73 79 139"
在空间上拆分并存储在数组中:["53","73","79","139"]
对每个元素调用float:[53,73,79,139]

您的csv格式不正确,或者您读取错误。你提取的不是单独的数字,而是放在方括号里的多个数字。请参阅错误消息:

ValueError: could not convert string to float: [ 53  73  79 139]
            ###              This is your data ^               ^

所以你有一个类似["[ 53 73 79 139]", "[ 123 12 11]"]的列表,而实际上应该有[["53", "73", "79", "139"], ["123", "12", "11"]]或{}。在

如果您的csv格式不正确,您可以通过拆分错误的值来实时更正此错误。这将为您提供一个简单的列表,如[53, 73, 79, 139]

^{pr2}$

这将为您提供一个列表列表,如[[ 53, 73, 79, 139], ...]

^{3}$

相关问题 更多 >