将NumPy数组转换为Python列表

423 投票
6 回答
631737 浏览
提问于 2025-04-15 17:24

我该怎么把一个NumPy数组转换成Python列表呢?

6 个回答

17

numpy的.tolist方法会把二维的numpy数组转换成嵌套列表,也就是说,里面会有很多列表,像一个列表里面再放一个列表。

如果你想要的是扁平的列表,也就是里面没有嵌套的那种,可以使用下面的方法。

import numpy as np
from itertools import chain

a = [1,2,3,4,5,6,7,8,9]
print type(a), len(a), a
npa = np.asarray(a)
print type(npa), npa.shape, "\n", npa
npa = npa.reshape((3, 3))
print type(npa), npa.shape, "\n", npa
a = list(chain.from_iterable(npa))
print type(a), len(a), a`
19

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个水桶倒到另一个水桶里。

有些时候,我们会遇到一些问题,比如数据的格式不对,或者数据不完整。这就像是你想把水从一个桶倒到另一个桶,但发现第一个桶里有个洞,水漏光了。

为了避免这些问题,我们可以使用一些工具和方法来确保数据的完整性和正确性。这就像是用一个好的水管来连接两个桶,确保水不会漏掉。

总之,处理数据的时候,要注意数据的来源和格式,确保一切都能顺利进行。

c = np.array([[1,2,3],[4,5,6]])

list(c.flatten())
585

使用 tolist() 方法:

>>> import numpy as np
>>> np.array([[1,2,3],[4,5,6]]).tolist()
[[1, 2, 3], [4, 5, 6]]

需要注意的是,这个方法会把数组里的值从它们原本的 numpy 类型(比如 np.int32 或 np.float32)转换成“最接近的 Python 兼容类型”,并放到一个列表里。如果你想保留 numpy 的数据类型,可以直接对你的数组使用 list() 方法,这样你得到的就是一个包含 numpy 标量 的列表。(感谢 Mr_and_Mrs_D 在评论中指出这一点。)

撰写回答