2017-06-09 12 views
1

pandasシリーズを1から3次元まで拡張したいと考えています。 print(np.array(xs).shape)は私に(2,)の出力を与え、np.array(xs)の形を(2,3,3)にしたいのですが、どうすればいいですか?パンダシリーズの列の拡大/変形寸法

import pandas as pd 
x = [] 
x.append(np.ones((3,3))) 
x.append(np.zeros((3,3))) 

xs = pd.Series(x) 
print(np.array(xs).shape) 

ご回答いただければ幸いです!

注:私はnp.array(x)が私に望ましい出力と形状を与えてくれることを知っていますが、最初にxsが与えられています。予想される出力はprint(np.array(x))で、形状は(2,3,3)です。

array([[[ 1., 1., 1.], 
     [ 1., 1., 1.], 
     [ 1., 1., 1.]], 

     [[ 0., 0., 0.], 
     [ 0., 0., 0.], 
     [ 0., 0., 0.]]]) 
+0

はあなたが絵あなたの期待出力を印刷することはできますか? –

+0

@ScottBostonさん、ただ編集されています! – Francis

答えて

0

このシリーズをデータフレームに変換して連結し、numpy配列に変換することができます。最後に必要な形に整形し直します。

pd.concat(xs.apply(pd.DataFrame).tolist()).values.reshape(2,3,3) 
Out[1081]: 
array([[[ 1., 1., 1.], 
     [ 1., 1., 1.], 
     [ 1., 1., 1.]], 

     [[ 0., 0., 0.], 
     [ 0., 0., 0.], 
     [ 0., 0., 0.]]]) 
+0

ありがとうございました! – Francis

+0

あなたは@Francisを歓迎します。助けがあればupvoteして答えを受け入れてください。 – Allen

1

あなたはSeriesarrayからlistにし、その後に変換することができます:

print (np.array(xs.tolist())) 
[[[ 1. 1. 1.] 
    [ 1. 1. 1.] 
    [ 1. 1. 1.]] 

[[ 0. 0. 0.] 
    [ 0. 0. 0.] 
    [ 0. 0. 0.]]] 

print (np.array(xs.tolist()).shape) 
(2, 3, 3)