我有一个以 NumPy 数组为元素的列表,如下所示:
[array([ 0.2, -2.3, 5.3]),
array([-1.6, -1.7, 0.3]),
array([ 2.4, -0.2, -3.0]),
array([-4.1, -2.3, -2.7])]
我想将其转换为 3 个列表,每个列表包含来自上述列表列的元素。因此,期望的结果如下
list1 = [0.2, -1.6, 2.4, -4.1]
list2 = [-2.3, -1.7, -0.2, -2.3]
list3 = [5.3, 0.3, -3.0, -2.7]
您可以使用NumPy
transpose
或T
如下方法实现此目的:完整示例
您可以使用 zip
使用以下一行中的列表 comp
zip
:你可以尝试
假设您的数组列表定义如下:
然后您可以使用以下一行代码:
NumPy 的
transpose()
函数会隐式转换array_list
为二维 NumPy 数组(因此无需显式执行此操作),然后再进行转置(即将行转换为列,将列转换为行)。调用tolist()
结果数组会将其转换为列表的列表,最顶层有三个元素(对应于原始的三列)。将结果赋值给list1, list2, list3 = ...
会将这个三元素列表“解包”到三个目标变量中。如果您希望结果(
list1
,,list2
)list3
再次为 NumPy 数组而不是列表,则可以省略tolist()
,因此只需编写:您可以将列表堆叠到二维 numpy 数组中并进行转置。
将整个列表转换为 Python 2D 列表列表比实例化三个新变量更合适,无论如何你都可以这样做
或者,您可以将原始列表列表转换为 numpy 数组,然后转置并将其转换回列表。