将嵌套的字符串列表转换为保持顺序的浮点数

时间:2021-03-22 18:26:25

标签: python arrays list type-conversion

我有一系列从 .csv 文件导入的嵌套列表,使用逗号分隔,我需要将嵌套列表转换为数组,并将每个子列表的每个元素转换为浮点数。

我的嵌套列表如下所示:

[[['[-27.19579876 -26.63047926 -25.66265752 -24.66628419 -25.96622205\n -28.30443609 -31.76915607 -38.00372114 -47.35791383 -39.40005965\n -29.22445377 -26.42370679 -28.66477882 -34.30370308 -35.18059249\n -34.46565279 -37.44988995 -39.01483496 -37.37774557 -34.56711077\n -33.19832104 -33.03131686 -34.41439695 -37.37570899 -42.09990677\n -44.07871575 -42.44796064 -44.26494463 -49.32499311 -56.70048713\n -64.66553782 -59.24921176 -54.79892771 -55.26403902 -59.2072573\n -63.22472635 -68.80195015 -75.08662546 -76.91907172 -77.38337998\n -77.63201733 -77.95896847 -78.64834584]'
   '[-1.08386134  0.35004455  0.27842593 -1.94350689 -4.44183424 -4.07447619\n -1.77572529 -0.23410515  0.45280711 -2.23341921 -2.76410909 -3.15466483\n -3.40239693 -3.69140218 -1.79075435  0.6430064   3.24091082  3.31559296\n -0.01170333  0.69596049  1.39120214  2.02807499  3.00311775  4.18844905\n  5.95027894  5.19644159  1.94171193 -0.50207882 -1.7136904  -0.73163291\n  3.19769766  7.31430314  7.34184555  7.62544895  8.32473157  8.58314892\n  8.1814814   6.13480498  5.4934919   5.44513918  5.20248941  5.33109816\n  5.27733676]'
   '[ -8.7461804   -8.00752109  -8.83808412  -9.5394061  -10.56202961\n  -9.91695934  -8.74573382  -6.06317537  -3.36842469  -6.9563696\n  -8.64882906  -9.41769463  -9.34989943  -7.4820141   -6.60575234\n  -6.60480487  -5.72743738  -4.33574933  -6.03119951  -7.1813543\n  -6.87034601  -7.09557771  -8.17130602  -8.05209492  -5.9291385\n  -3.98802667  -4.14947874  -3.3090392   -1.16519149   1.10024417\n   1.4521037   -2.03653649  -3.63826979  -4.33748373  -4.19752051\n  -3.32306985  -1.52347287   0.64845846   1.89777445   2.50546914\n   2.59801871   2.85173201   3.07714712]'
   ...

如您所见,它是一个嵌套列表,其中的子列表包含作为字符串的子子列表(等等)。因此,当我尝试将它们转换为数组并将值保存为浮点数时,如下所示,我收到以下错误:

nested_list = np.array([nested_list]).astype(np.float)



   ValueError: could not convert string to float: '[-27.19579876 -26.63047926 -25.66265752 -24.66628419
 -25.96622205\n -28.30443609 -31.76915607 -38.00372114 -47.35791383 -39.40005965\n -29.22445377
 -26.42370679 -28.66477882 -34.30370308 -35.18059249\n -34.46565279 -37.44988995 -39.01483496
 -37.37774557 -34.56711077\n -33.19832104 -33.03131686 -34.41439695 -37.37570899 -42.09990677\n
 -44.07871575 -42.44796064 -44.26494463 -49.32499311 -56.70048713\n -64.66553782 -59.24921176
 -54.79892771 -55.26403902 -59.2072573\n -63.22472635 -68.80195015 -75.08662546 -76.91907172
 -77.38337998\n -77.63201733 -77.95896847 -78.64834584]'

所以,据我所知,一个完整的子列表是一个字符串,用空格或逗号分隔它会将值与 '[' 和 '\n' 符号分组。正如我所说,我的目标是只访问这些值,以便我可以保留嵌套列表的结构,并将这些值转换为浮点数,以便稍后将它们放入数组中。

最后的多维数组的维数是(样本数/列表长度,16)。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

看起来您的 csv 文件格式不正确。 使用 readlines 函数,然后去除 '\n' 部分。 也许它有效

相关问题