x=np.arange(9).reshape((3, 3))
y=[]
for i in x:
for j in i:
y.append((i, j))
在单行python代码中获取y
的最佳方法是定义一个二维数组,然后将其展平
y=np.ravel([[(i, j) for j in i] for i in x])
有更好的方法来定义y
吗?
答案 0 :(得分:2)
您可以使用itertools.chain.from_iterable
展平2d列表。
import numpy as np
from itertools import chain
x = np.arange(9).reshape((3, 3))
y = chain.from_iterable(x)
现在x
看起来像
[[0 1 2]
[3 4 5]
[6 7 8]]
和y
(当迭代或转换为列表时)看起来像
[0, 1, 2, 3, 4, 5, 6, 7, 8]
chain
功能实际上只是撤消了reshape
。那么为什么不把它留下呢?