PyThon numpy中array如何转list?

NumPy数组转列表应使用.tolist()方法,1. 一维数组转换为普通列表;2. 二维数组转换为嵌套列表;3. 与list()不同,tolist()生成纯Python数据类型;4. 转换后int64变int,float64变float,适配标准库。

在 Python 的 NumPy 中,将数组(array)转换为列表(list)非常简单,可以直接使用 .tolist() 方法完成。

使用 tolist() 方法

.tolist() 是 NumPy 数组对象自带的方法,能将整个 array 转换为 Python 的 list,支持多维数组。

一维数组示例:

import numpy as np
arr = np.array([1, 2, 3])
lst = arr.tolist()
print(lst)  # 输出: [1, 2, 3]

二维数组示例:

arr = np.array([[1, 2], [3, 4]])
lst = arr.tolist()
print(lst)  # 输出: [[1, 2], [3, 4]]

与 list() 函数的区别

虽然可以使用 list(arr) 将数组转为列表,但效果不同:

  • arr.tolist():完全转换为嵌套的 Python 列表,适用于多维数据
  • list(arr):对高维数组结果可能不符合预期,例如二维数组会变成“数组的列表”,而不是“列表的列表”

对比示例:

arr = np.array([[1, 2], [3, 4]])

print(arr.tolist()) # [[1, 2], [3, 4]] —— 正确的嵌套列表 print(list(arr)) # [array([1, 2]), array([3, 4])] —— 不是纯 Python list

注意事项

转换后数据类型也会变为原生 Python 类型:

  • NumPy 的 np.int64 会变成 Python 的 int
  • NumPy 的 np.float64 会变成 Python 的 float

这对于与标准库或 JSON 等模块交互时很有帮助,因为它们通常不接受 NumPy 数据类型。

基本上就这些。用 .tolist() 是最推荐、最安全的方式。