擅长:python、mysql、java
<p>下面是一种主要基于<code>NumPy</code>的方法,使用<a href="https://docs.python.org/3.0/library/itertools.html" rel="nofollow noreferrer">^{<cd2>}</a>将数组与填充值交错:</p>
<pre><code>def interleave(*a):
# zip_longest filling values with as many NaNs as
# values in second axis
l = *zip_longest(*a, fillvalue=[np.nan]*a[0].shape[1]),
# build a 2d array from the list
out = np.concatenate(l)
# return non-NaN values
return out[~np.isnan(out[:,0])]
</code></pre>
<hr/>
<pre><code>a1 = np.array([[11,12], [41,42]])
a2 = np.array([[21,22], [51,52], [71,72], [91,92], [101,102]])
a3 = np.array([[31,32], [61,62], [81,82]])
interleave(a1,a2,a3)
array([[ 11., 12.],
[ 21., 22.],
[ 31., 32.],
[ 41., 42.],
[ 51., 52.],
[ 61., 62.],
[ 71., 72.],
[ 81., 82.],
[ 91., 92.],
[101., 102.]])
</code></pre>