gpt4 book ai didi

python - list(numpy_array) 和 numpy_array.tolist() 之间的区别

转载 作者:太空狗 更新时间:2023-10-29 22:11:09 27 4
gpt4 key购买 nike

numpy 数组上应用 list() 与调用 tolist() 有什么区别?

我正在检查两个输出的类型,它们都表明我得到的结果是一个 list,但是,输出看起来并不完全相同。是不是因为 list() 不是 numpy 特定的方法(即可以应用于任何序列)和 tolist() numpy 特定的,只是在这种情况下他们返回相同的东西?

输入:

points = numpy.random.random((5,2))
print "Points type: " + str(type(points))

输出:

Points type: <type 'numpy.ndarray'>

输入:

points_list = list(points)
print points_list
print "Points_list type: " + str(type(points_list))

输出:

[array([ 0.15920058,  0.60861985]), array([ 0.77414769,  0.15181626]), array([ 0.99826806,  0.96183059]), array([ 0.61830768,  0.20023207]), array([ 0.28422605,  0.94669097])]
Points_list type: 'type 'list''

输入:

points_list_alt = points.tolist()
print points_list_alt
print "Points_list_alt type: " + str(type(points_list_alt))

输出:

[[0.15920057939342847, 0.6086198537462152], [0.7741476852713319, 0.15181626186774055], [0.9982680580550761, 0.9618305944859845], [0.6183076760274226, 0.20023206937408744], [0.28422604852159594, 0.9466909685812506]]

Points_list_alt type: 'type 'list''

最佳答案

您的示例已经显示出差异;考虑以下二维数组:

>>> import numpy as np
>>> a = np.arange(4).reshape(2, 2)
>>> a
array([[0, 1],
[2, 3]])
>>> a.tolist()
[[0, 1], [2, 3]] # nested vanilla lists
>>> list(a)
[array([0, 1]), array([2, 3])] # list of arrays

tolist处理到嵌套 Vanilla 列表的完全转换(即 listintlist),而 list 只是迭代数组的第一维,创建一个数组列表(list of np.array of np.int64)。虽然都是列表:

>>> type(list(a))
<type 'list'>
>>> type(a.tolist())
<type 'list'>

每个列表的元素有不同的类型:

>>> type(list(a)[0])
<type 'numpy.ndarray'>
>>> type(a.tolist()[0])
<type 'list'>

正如您所注意到的,另一个区别是 list 将适用于任何可迭代对象,而 tolist 只能在专门实现该方法的对象上调用。

关于python - list(numpy_array) 和 numpy_array.tolist() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27890735/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com