<p>设置</p>
<pre><code>>>> import numpy as np
>>> import pandas as pd
>>> a = np.zeros((4,3,3),dtype=int) + [0,1,2]
>>> a *= 10
>>> a += np.array([1,2,3,4])[:,None,None]
>>> a
array([[[ 1, 11, 21],
[ 1, 11, 21],
[ 1, 11, 21]],
[[ 2, 12, 22],
[ 2, 12, 22],
[ 2, 12, 22]],
[[ 3, 13, 23],
[ 3, 13, 23],
[ 3, 13, 23]],
[[ 4, 14, 24],
[ 4, 14, 24],
[ 4, 14, 24]]])
</code></pre>
<p>沿最后一个尺寸均匀分割;堆叠那些<em>元素</em>,重塑形状,馈送到<code>DataFrame</code>。使用阵列维度的长度可以简化该过程</p>
<pre><code>>>> d0,d1,d2 = a.shape
>>> pd.DataFrame(np.stack(np.dsplit(a,d2)).reshape(d0*d2,d1))
0 1 2
0 1 1 1
1 2 2 2
2 3 3 3
3 4 4 4
4 11 11 11
5 12 12 12
6 13 13 13
7 14 14 14
8 21 21 21
9 22 22 22
10 23 23 23
11 24 24 24
>>>
</code></pre>
<p>使用<em>你的</em>形状</p>
<pre><code>>>> b = np.random.random((1536, 16, 48))
>>> d0,d1,d2 = b.shape
>>> df = pd.DataFrame(np.stack(np.dsplit(b,d2)).reshape(d0*d2,d1))
>>> df.shape
(73728, 16)
>>>
</code></pre>
<hr/>
<p>从3d数组生成数据帧后,将分类列添加到其中,<code>df['class'] = data</code><a href="https://pandas.pydata.org/docs/user_guide/dsintro.html#column-selection-addition-deletion" rel="nofollow noreferrer">Column selection, addition, deletion</a></p>