如何在pandas/numpy中将一系列数组转换为单个矩阵?

use*_*495 11 python matrix series multidimensional-array pandas

我在某种程度上得到了一个pandas.Series包含一堆数组的数据,如s下面的代码所示.

data = [[1,2,3],[2,3,4],[3,4,5],[2,3,4],[3,4,5],[2,3,4],
        [3,4,5],[2,3,4],[3,4,5],[2,3,4],[3,4,5]]
s = pd.Series(data = data)
s.shape # output ---> (11L,)
# try to convert s to matrix
sm = s.as_matrix()
# but...
sm.shape # output ---> (11L,)
Run Code Online (Sandbox Code Playgroud)

如何将其s转换为具有形状(11,3)的矩阵?谢谢!

jua*_*aga 15

如果,出于某种原因,你发现自己有一种令人厌恶的a Series,那么将它恢复到你想要的那种matrix或者array你想要的是直截了当的:

In [16]: s
Out[16]:
0     [1, 2, 3]
1     [2, 3, 4]
2     [3, 4, 5]
3     [2, 3, 4]
4     [3, 4, 5]
5     [2, 3, 4]
6     [3, 4, 5]
7     [2, 3, 4]
8     [3, 4, 5]
9     [2, 3, 4]
10    [3, 4, 5]
dtype: object

In [17]: sm = np.matrix(s.tolist())

In [18]: sm
Out[18]:
matrix([[1, 2, 3],
        [2, 3, 4],
        [3, 4, 5],
        [2, 3, 4],
        [3, 4, 5],
        [2, 3, 4],
        [3, 4, 5],
        [2, 3, 4],
        [3, 4, 5],
        [2, 3, 4],
        [3, 4, 5]])

In [19]: sm.shape
Out[19]: (11, 3)
Run Code Online (Sandbox Code Playgroud)

但除非它是你无法改变的东西,否则开始使用该系列毫无意义.


Sel*_*lah 10

另一种方法是提取系列的值并在其上使用numpy.stack。

np.stack(s.values)
Run Code Online (Sandbox Code Playgroud)

PS。我经常遇到类似的情况。

  • 这个。请这是答案。 (3认同)