擅长:python、mysql、java
<p>提取底层数组数据,沿最后一个轴添加一个新轴,然后使用<code>np.vsplit</code>-</p>
<pre><code>np.vsplit(df.values[...,None],df.shape[0])
</code></pre>
<p>样本运行-</p>
^{pr2}$
<p>如果您正在使用NumPy funcs,那么在大多数情况下,您应该能够取消拆分并直接使用扩展数组版本。在</p>
<p>现在,<a href="https://github.com/numpy/numpy/blob/v1.12.0/numpy/lib/shape_base.py#L574-L623" rel="nofollow noreferrer">under the hoods ^{<cd1>}</a>利用了<code>np.array_split</code>,这基本上是一个循环。所以,更高效的方法是避免函数开销,比如-</p>
<pre><code>np.array_split(df.values[...,None],df.shape[0])
</code></pre>
<p>请注意,这将比预期输出中列出的维度多出一个维度。如果你想要压缩版本,我们可以在新的axis扩展数组版本上使用列表理解,比如-</p>
<pre><code>In [357]: [i for i in df.values[...,None]]
Out[357]:
[array([[1],
[2],
[3]]), array([[2],
[2],
[4]]), array([[3],
[2],
[4]])]
</code></pre>
<p>因此,另一种方法是在循环中添加新轴-</p>
<pre><code>[i[...,None] for i in df.values]
</code></pre>