【发布时间】:2021-06-19 10:33:32
【问题描述】:
我有一系列从 .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)。
非常感谢任何帮助!
【问题讨论】:
-
" 包含作为字符串的子子列表(等等)。"它们不是子列表。它们是字符串。使用
csv天真地序列化这些数据是一个错误。只有 hackey 方法来检索数据。不过,您应该真正解决这个根本问题。 -
@juanpa.arrivillaga 关于如何正确解决问题有什么建议吗?
-
所有子列表的长度是否相等??
-
@CutePanda 不,不是。都有不同的长度。
-
@JazminCristina 嵌套列表的深度是多少?它只是一个包含不同大小列表的大列表?还是子列表也包含子子列表?
标签: python arrays list type-conversion