繁体   English   中英

将 NumPy 数组转换为 Python 列表

[英]Converting NumPy array into Python List

如何将 NumPy 数组转换为 Python 列表,例如:

[[ 0.] [ 1.] [ 2.] [ 3.] [ 4.]] --> ['0', '1', '2', '3', '4']

您可以使用 numpy 的.flatten()方法,后跟一个listmap function。

>>> arr = np.array([[0.],[1.],[2.],[3.],[4.]])
>>> arr = arr.flatten()
>>> arr
array([0., 1., 2., 3., 4.])
>>> arr = list(map(lambda x:f"{x:.0f}", arr))
>>> arr
['0', '1', '2', '3', '4']

首先尝试了解数组是什么:

In [73]: arr = np.array([[ 0.], [ 1.], [ 2.], [ 3.], [ 4.]])
In [74]: arr
Out[74]: 
array([[0.],
       [1.],
       [2.],
       [3.],
       [4.]])
In [75]: arr.shape, arr.dtype
Out[75]: ((5, 1), dtype('float64'))

有一种很好、快速的方法可以将数组转换为列表 - 在使用 [] 和类型时接近原始值 - 浮动。

In [76]: arr.tolist()
Out[76]: [[0.0], [1.0], [2.0], [3.0], [4.0]]

如果您不想要那些内部 [],维度,让我们拉威尔/展平数组。 使用数组比嵌套列表更容易完成:

In [77]: arr.ravel()
Out[77]: array([0., 1., 2., 3., 4.])

我们还可以将浮点数转换为字符串:

In [78]: arr.ravel().astype(str)
Out[78]: array(['0.0', '1.0', '2.0', '3.0', '4.0'], dtype='<U32')
In [79]: arr.ravel().astype(str).tolist()
Out[79]: ['0.0', '1.0', '2.0', '3.0', '4.0']

但是你想要整数 - 所以让我们先进行转换:

In [80]: arr.ravel().astype(int).astype(str).tolist()
Out[80]: ['0', '1', '2', '3', '4']

另一个答案显示了如何使用列表进行这些转换。

这是代码:

import numpy as np

arr = np.array([[1], [2], [3]])
print(f'NumPy Array: {arr}')

list1 = arr.tolist()
l = [i for sublist in list1 for i in sublist]

print(f'List: {l}')

您可以使用简单for loop

import numpy as np
a = [[0.],[1.],[2.],[3.],[4.]]
b = np.asarray(a)
lst=[]
for i in b:
    lst.append(str(int(i[0])))
lst
>>>['0', '1', '2', '3', '4']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM