如何将numpy.ndarray的列表转换为列表的列表?

16 浏览
0 Comments

如何将numpy.ndarray的列表转换为列表的列表?

如何将NumPy数组转换为Python列表?

0
0 Comments

问题的出现原因是numpy的.tolist方法在将numpy数组转换为列表时会产生嵌套列表,而不是所期望的平铺列表。解决方法有两种:

方法一:

import numpy as np
from itertools import chain
a = [1,2,3,4,5,6,7,8,9]
npa = np.asarray(a)
npa = npa.reshape((3, 3))
a = list(chain.from_iterable(npa))

这种方法通过使用itertools库中的chain.from_iterable函数将嵌套列表展开为平铺列表。

方法二:

import numpy as np
a = [1,2,3,4,5,6,7,8,9]
npa = np.asarray(a)
npa = npa.reshape((3, 3))
a = npa.flatten().tolist()

这种方法使用numpy的flatten方法将数组展平,并通过tolist方法将展平后的数组转换为列表。

对于为什么.tolist方法会创建嵌套列表以及为什么需要通过多个步骤才能得到一个简单的列表,可以参考_stats用户的评论。他指出.tolist方法实际上是对数组进行序列化的过程,而通过多个步骤得到的列表能够满足np.array(arr.tolist()) == arr的条件。

0
0 Comments

问题的原因是在numpy中,数组的维度可能是不同的,有时候需要将numpy数组转换为列表的形式。然而,直接使用list()函数来转换numpy数组会得到一个包含numpy数组的列表,而不是将numpy数组转换为由列表组成的列表。因此,需要寻找一种方法将列表中的每个numpy数组转换为一个列表。

解决这个问题的方法是使用numpy数组的tolist()方法。tolist()方法可以将numpy数组转换为一个列表。通过使用tolist()方法,可以将numpy数组转换为由列表组成的列表。

以下是使用tolist()方法将numpy数组转换为由列表组成的列表的示例代码:

import numpy as np
c = np.array([[1,2,3],[4,5,6]])
c_list = c.tolist()
print(c_list)

以上代码将输出以下结果:

[[1, 2, 3], [4, 5, 6]]

从上面的代码和解释中可以看出,使用tolist()方法可以将numpy数组转换为由列表组成的列表,从而解决了将列表中的numpy数组转换为列表的问题。

0
0 Comments

问题的原因是要将一个包含numpy.ndarray的列表转换为一个包含列表的列表。解决方法是使用numpy的tolist()函数来实现转换。tolist()函数将numpy类型的值转换为“最接近的兼容Python类型”的列表。如果想保留numpy数据类型,可以将数组直接转换为列表,这样得到的是一个包含numpy标量的列表。如果列表中的数据类型是float32,使用tolist()函数会将其转换为浮点数,而这可能不是我们期望的结果。而使用list()函数则不会出现这个问题。为什么应该优先选择tolist()函数呢?这取决于具体情况。通常,当将数组转换为列表时,我们隐含地指的是常规的Python数据类型,即浮点数或整数,而不是numpy标量类型的列表。因此,在某些情况下,使用tolist()函数可能更合适。特别是当将数据序列化为json或yaml文件时。

0