2016-07-06 673 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