制作包含多维数组的所有值的一维数组

时间:2017-07-06 21:25:38

标签: python arrays numpy multidimensional-array

我这样做的方式是:

self.cleaned = []
for a in self.P[-1]:
    for b in a:
        for c in b:
            for d in c:
                self.cleaned.extend(d)

这是非常丑陋和不直观,是否有一个正确的方法这样做?也许使用numpy

2 个答案:

答案 0 :(得分:1)

您可以使用np.ndarray.flatten直接使用numpy展平:

self.cleaned = np.array(self.P).flatten()

答案 1 :(得分:0)

将列表转换为numpy数组后,

np.ravel的效果非常好:

self.cleaned = np.ravel(np.array(self.P[-1]))

ravel碰巧比flatten更便宜,更快,因为前者通过修改步幅返回原始数组(创建调用np.array)的视图。后者返回原始列表的完整副本,并且速度较慢。

相关问题