numpy模块提供了一个名为numpy.ndarray.tolist()的函数,用于将数组的数据元素转换为列表。此函数将数组作为一个a.ndim-级别深度嵌套的Python标量列表返回。

简单来说,此函数将数组元素的副本返回为Python列表。通过item函数,元素将转换为最近的兼容内置Python类型。当'a.ndim'为0时,列表的深度为0,它将是一个简单的Python标量,而不是任何列表。

语法

ndarray.tolist()

参数

此函数没有参数。

返回值:y:对象,或对象列表,或对象列表

此函数返回可能嵌套的数组元素的列表。

注意 我们可以通过a=np.array(a.tolist())重新创建数组,但是它有时可能会丢失精度。

示例1:

如果我们对1D数组使用a.tolist(),那么它几乎与list(a)*相同,只是*tolist会将numpy标量转换为Python标量。

import numpy as np  
a = np.uint32([6, 2])  
a  
a_list=list(a)  
a_list  
type(a_list[0])  
a_tolist=a.tolist()  
a_tolist  
type(a_tolist[0])  

输出:

array([6, 2], dtype=uint32)
[6, 2]
<type 'numpy.uint32'>
[6L, 2L]
<type 'long'>

在上面的代码中

  • 我们使用别名np导入了numpy。
  • 我们使用np.uint32()函数创建了一个数组'a'。
  • 我们声明了变量'a_list'并赋值为list()函数的返回值。
  • 我们尝试打印变量'a'、'a_list'以及a_list的类型。
  • 我们声明了变量'a_tolist'并赋值为ndarray.tolist()的返回值。
  • 最后,我们尝试打印'a_tolist'的类型和值。

在输出中,显示了一个列表和其类型,其元素是从源数组转换而来的。

示例2:

对于2维数组,tolist递归地应用。

import numpy as np  
a = np.array([[11, 21], [31, 41]])  
b=a.tolist()  
a  
b  

输出:

array([[11, 21],
           [31, 41]])
[[11, 21], [31, 41]]

在上面的代码中

  • 我们使用别名np导入了numpy。
  • 我们使用np.array()函数创建了一个2维数组'a'。
  • 我们声明了变量'b'并赋值为a.tolist()的返回值。
  • 最后,我们尝试打印变量'b'的值。

在输出中,显示了一个列表,其元素是从源数组转换而来的。

示例3:

import numpy as np  
x = np.array(5)  
list(x)  
y=x.tolist()  
y  

输出:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: iteration over a 0-d array
5

标签: NumPy, NumPy教程, NumPy学习, NumPy安装, NumPy入门教程, NumPy进阶教程, NumPy指南, NumPy学习指南, NumPy库, NumPy库学习, NumPy库入门, NumPy库教程, NumPy应用, NumPy库进阶