二次元リストなどイテレータの二重構造になっているものの平坦イテレータを取得するには、itertoolsのchain.from_iterableを使う。
import itertools
l_2d = [[0, 1], [2, 3]]
print(list(itertools.chain.from_iterable(l_2d)))
# [0, 1, 2, 3]
ちなみに、itertools.chain()は、イテレータの結合につかうもの。
from itertools import chain
import numpy as np
nums = np.array([[0, 1, 2], [10, 11, 12], [20, 21, 22]])
zeros = np.zeros((2, 3))
print(list(chain(nums, zeros)))
# [array([0, 1, 2]), array([10, 11, 12]), array([20, 21, 22]), array([0., 0., 0.]), array([0., 0., 0.])]