如何将 Numpy 数组转换为列表

如何将 Numpy 数组转换为列表

参考:numpy array to list

在数据处理和科学计算中,NumpyPython 中最常用的库之一。Numpy 提供了一个强大的数组对象 ndarray,它比 Python 的内置列表更加高效和功能丰富。然而,在某些情况下,我们可能需要将 Numpy 数组转换回 Python 列表。本文将详细介绍如何将 Numpy 数组转换为列表,并提供多个示例代码来展示不同情况下的转换方法。

1. 基本转换

将一个 Numpy 数组转换为 Python 列表是非常直接的。我们可以使用 ndarray 对象的 tolist() 方法。这个方法会将 Numpy 数组转换为嵌套列表(如果数组是多维的话)。

示例代码 1

import numpy as np

# 创建一个一维数组
array1d = np.array([1, 2, 3, 4, 5])
list1d = array1d.tolist()
print(list1d)  # 输出: [1, 2, 3, 4, 5]

Output:

如何将 Numpy 数组转换为列表

示例代码 2

import numpy as np

# 创建一个二维数组
array2d = np.array([[1, 2, 3], [4, 5, 6]])
list2d = array2d.tolist()
print(list2d)  # 输出: [[1, 2, 3], [4, 5, 6]]

Output:

如何将 Numpy 数组转换为列表

2. 使用 np.ndarray.flatten()np.ndarray.ravel()

在转换之前,如果我们想要将多维数组扁平化为一维数组,可以使用 flatten()ravel() 方法。flatten() 方法返回一个新的数组,而 ravel() 返回的是视图(如果可能)。

示例代码 3

import numpy as np

# 创建一个二维数组
array2d = np.array([[1, 2, 3], [4, 5, 6]])
flat_list = array2d.flatten().tolist()
print(flat_list)  # 输出: [1, 2, 3, 4, 5, 6]

Output:

如何将 Numpy 数组转换为列表

示例代码 4

import numpy as np

# 创建一个三维数组
array3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
flat_list = array3d.ravel().tolist()
print(flat_list)  # 输出: [1, 2, 3, 4, 5, 6, 7, 8]

Output:

如何将 Numpy 数组转换为列表

3. 使用列表推导式

虽然 tolist() 方法是转换 Numpy 数组到列表的最直接方式,但我们也可以使用 Python 的列表推导式来实现这一转换,尤其是当我们需要在转换过程中执行一些操作时。

示例代码 5

import numpy as np

# 创建一个一维数组
array1d = np.array([1, 2, 3, 4, 5])
list1d = [x for x in array1d]
print(list1d)  # 输出: [1, 2, 3, 4, 5]

Output:

如何将 Numpy 数组转换为列表

示例代码 6

import numpy as np

# 创建一个二维数组
array2d = np.array([[1, 2, 3], [4, 5, 6]])
list2d = [[x for x in row] for row in array2d]
print(list2d)  # 输出: [[1, 2, 3], [4, 5, 6]]

Output:

如何将 Numpy 数组转换为列表

4. 处理复杂数据类型

当 Numpy 数组包含复杂数据类型,如结构化数组或日期时间数组时,转换过程可能需要额外的注意。

示例代码 7

import numpy as np

# 创建一个包含复杂数据类型的数组
dtype = [('name', 'S10'), ('height', float), ('age', int)]
values = [('Alice', 1.75, 25), ('Bob', 1.85, 45), ('Cathy', 1.70, 37)]
array_complex = np.array(values, dtype=dtype)
list_complex = array_complex.tolist()
print(list_complex)  # 输出: [(b'Alice', 1.75, 25), (b'Bob', 1.85, 45), (b'Cathy', 1.7, 37)]

Output:

如何将 Numpy 数组转换为列表

示例代码 8

import numpy as np

# 创建一个日期时间数组
dates = np.array(['2021-01-01', '2021-01-02'], dtype='datetime64[D]')
list_dates = dates.tolist()
print(list_dates)  # 输出: [datetime.date(2021, 1, 1), datetime.date(2021, 1, 2)]

Output:

如何将 Numpy 数组转换为列表

5. 性能考虑

当处理大型数组时,转换性能可能成为一个考虑因素。使用 tolist() 方法通常是最快的方式,但在特定情况下,其他方法可能会更适合。

示例代码 9

import numpy as np

# 创建一个大型一维数组
large_array = np.random.rand(1000000)
%timeit -n 10 large_array.tolist()

示例代码 10

import numpy as np

# 使用列表推导式转换大型一维数组
large_array = np.random.rand(1000000)
%timeit -n 10 [x for x in large_array]

总结

本文详细介绍了如何将 Numpy 数组转换为 Python 列表,包括基本转换方法、扁平化处理、使用列表推导式以及处理复杂数据类型的情况。通过提供的示例代码,读者可以更好地理解和应用这些转换技巧在实际问题中。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程