如何在 Python 中堆叠 3D 列表中的元素

How to Stack elements from a 3D list in Python

我有两个这样的列表:

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

y_all = [[2,3,5,4,6], 

         [3,2,4,3,5], 

         [4,5,4,3,4]]

我需要这样的输出:

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

我怎样才能更有效地做到这一点,以便如果我有更大的 x 和 y_all 我可以做到这一点?

这是我目前尝试过的方法:

import numpy as np

y=np.array(y_all).T

y_all_fin = []

for i in range(len(y[0])):

    inter = np.vstack((x,y_all[i]))
    y_all_fin.append(inter)

points = np.hstack((y_all_fin[0],y_all_fin[1],y_all_fin[2])).T

N = []

for i in range(len(points[:,0])):

    new = tuple(points[i])

    N.append(new)

你可以用这个简单的 1-liner 来做到这一点:

[a for y in y_all for a in zip(x,y)]

请注意,如果您的数组包含元组等对象(非数字)类型,则使用 numpy 毫无意义...