2017-08-16 6 views
1

私は配列内にサイズ7X32の891行列を一緒に持っています。私はサイズ7X32の行列の891​​トリプルを取得したいと思います。二つの行列(明らかにしないそのサイズ)の行列の配列を行列の三つ組の配列にする/ Python Pandas

例:[]は、それが異なるマトリックスだ意味

[[1,1,1,1,1], 
[2,2,2,2,2], 
[3,3,3,3,3]], 
[[1,1,1,1,1], 
[2,2,2,2,2], 
[3,3,3,3,3]], 
[[1,1,1,1,1], 
[2,2,2,2,2], 
[3,3,3,3,3]], 
[[2,2,2,2,2], 
[2,2,2,2,2], 
[3,3,3,3,3]], 
[[2,2,2,2,2], 
[2,2,2,2,2], 
[3,3,3,3,3]], 
[[2,2,2,2,2], 
[2,2,2,2,2], 
[3,3,3,3,3]], 

[[1,1,1,1,1], 
[2,2,2,2,2], 
[3,3,3,3,3]], 
[[2,2,2,2,2], 
[2,2,2,2,2], 
[3,3,3,3,3]] 

私はそれになる必要があります。

私は行列を取得するために使用されるコード:定期的なデータフレームから

matrices = np.dstack([df.values.astype(int)] * 32) 

。私は

matrices = np.dstack([[df.values.astype(int)] * 32]*3) 

多分考え

は動作しますが、それはしませんでした。

私はcifar 10データのような「イメージ」に定期的な問題を作り出すためにこれをやっています。

答えて

2

、これは動作しているようです。しかし、あなたが必要とするものを生産するならば、私は@ Divaのアドバイスに遅れをとっています。

私の解決策としては、より良い方法があると確信していますが、これはうまくいきました。これは@Divakarに私たちにもっと良い方法を見せるために彼が見なければならないものを与えるかもしれません。

np.stack([np.dstack([df.values.astype(int)] * 32)] * 3).transpose(1, 0, 2, 3) 

私は行列の配列だけではなく、1のためにそれを行うために必要なセットアップ

df = pd.DataFrame({ 
    'Embarked': [0, 1, 1, 3, 1], 
    'Family': [1, 1, 0, 1, 0], 
    'Fare': [1.0, 2.0, 1.0, 2.0, 2.0], 
    'Pclass': [3, 1, 3, 1, 3], 
    'Sex': [0, 1, 1, 1, 0], 
    'Title': [0, 3, 2, 3, 1]} 
)['Pclass Sex Fare Embarked Title Family'.split()] 
+0

これは私が必要としていたものです!どうもありがとうございました! –

+0

彼はそれを編集するかもしれない@ Divakarの答えに注意してください。彼がこの解決策を実行し、あなたが望んでいたことの明確なアイデアを得るなら、彼はこれよりも良い答えを持つかもしれません。彼がそうするなら、それはおそらくあなたのために良いでしょう。だからあなたの目を離してください。 – piRSquared

+0

私は目をつけておきます、ありがとう!このコードの欠落部分で、私はCNNで解決するために、通常の問題からイメージタイプへのトポロジカルマップを作成しようとしています。巨大な助け! –

3

使用np.repeat 1つのより薄暗い/軸によって拡張した後 -

np.broadcast_to(a[None],(3,) + a.shape) # creates a read-only version 

書き込み可能なバージョンを作るために -

In [140]: a 
Out[140]: 
array([[7, 1, 8, 6], 
     [5, 8, 1, 1], 
     [2, 7, 3, 7]]) 

In [141]: np.repeat(a[None],3,axis=0) 
Out[141]: 
array([[[7, 1, 8, 6], 
     [5, 8, 1, 1], 
     [2, 7, 3, 7]], 

     [[7, 1, 8, 6], 
     [5, 8, 1, 1], 
     [2, 7, 3, 7]], 

     [[7, 1, 8, 6], 
     [5, 8, 1, 1], 
     [2, 7, 3, 7]]]) 

またnp.broadcast_toを使用することができます -

np.repeat(a[None],3,axis=0) 

のサンプル実行、.copy()を付けてください。


OPと@piRSquaredとも答えポスト間の歴史を使用しては、ここでは風に私のダーツだ - あなたの元データフレームから

a = df.values.astype(int) 
shp = a.shape 
out = np.broadcast_to(a[:,None,:,None], (shp[0], 3, shp[1], 32)) 
+0

。問題の可視化を支援するための例として、単一のマトリックスがありました。 –

+0

私はより良い視覚化のために編集します。 –

+0

@AntonioLópezRuizよくある質問は、 - どのように行列の配列を格納していますか? – Divakar

関連する問題