如何在 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 毫无意义...
我有两个这样的列表:
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 毫无意义...