2016-07-06 328 views
1

我有一個尺寸的三維矩陣,549x19x50我需要創建一個2D矩陣,它使我獲得一個549x950矩陣。使用張量流將3D矩陣轉換成二維矩陣

我到目前爲止所做的是使用tensorflow;

#data_3d is the 3D matrix 
data_2d = tf.reshape(data_3d,[549,-1]) 

此打印出data_3d的所有值在提示,當我嘗試訪問data_2d它給了我一個NameError

data_3d是列出的名單列表。不是張量或ndarray。如果我們不能爲列表執行此操作,有什麼方法可以輕鬆地將列表轉換爲ndarrays?

由於提前,

Bhashithe

+0

爲什麼只是Tensorflow? –

+0

我需要使用tensorflow的遞歸神經網絡。我一直在測試並且現在非常熟悉。我可以使用任何其他的Python庫,如果你可以指向我的東西@GalDreiman – Bhashithe

+0

所以看看答案,我會用一個簡單的例子發佈一個基於'numpy'的答案。 –

回答

2

有一個簡單的方法來做到這一點使用numpy

import numpy as np 

data_3d = np.arange(27).reshape((3,3,3)) 
data_2d = data_3d.swapaxes(1,2).reshape(3,-1) 

輸出繼電器:

data_2d 

[0 3 6 1 4 7 2 5 8]
[9 12 15 10 13 16 11 14 17]
[18 21 24 19 22 25 20 23 26]]

print data_3d 

[[[0 1 2]
[3 4 5]
[6 7 8]]

[[9 10 11]
[12 13 14]
[15 16 17]]

[[18 19 20]
[21 22 23]
[24 25 26]]]

注意swapaxes(1,2)是這裏主要的事情 - 你需要定義你想換哪個軸。

+0

這工作沒有任何swapaxes()。我不明白你爲什麼在你的答案中加入了swapaxes。 – Bhashithe

+1

所以你特別選擇交換哪些斧頭,而不是重塑。 –

+0

這是有道理的。但在我的情況下,交換是沒有必要的。很酷,知道這一點。謝謝Gal! – Bhashithe