Python:3D列主张量到行主张量
我使用Python:3D列主张量到行主张量,python,numpy,scipy,Python,Numpy,Scipy,我使用scipy.io将Mat文件读入python,加载3D张量。我在网上找到的大多数参考文献只讨论了2个维度,在维度超过2的数据中,我很难将注意力集中在从列专业到行专业 scipy.io是否自动处理从列主目录(order='F')到行主目录(order='C')的转换 如果不是1,那么有没有比结合使用ravel和restrape和order来更改三维张量更好的方法 如果不是2,是否有方法通过编程确定转换张量的形状?在下面的示例中,我使用了“展开”和“重塑”,但很明显,原始形状不合适 示例 在这
scipy.io
将Mat文件读入python,加载3D张量。我在网上找到的大多数参考文献只讨论了2个维度,在维度超过2的数据中,我很难将注意力集中在从列专业到行专业
ravel
和restrape
和order
来更改三维张量更好的方法李>
import numpy as np
lst3d = [[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]], [[13, 14, 15], [17, 18, 19], [21, 22, 23], [25, 26, 27]]]
print(lst3d)
a = np.array(lst3d)
b = np.array(lst3d)
print(a.shape)
print('----------')
print(a.ravel(order='C').reshape(a.shape))
print('----------')
print(b.ravel(order='F').reshape(b.shape))
产出:
[[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]], [[13, 14, 15], [17, 18, 19], [21, 22, 23], [25, 26, 27]]]
(2, 4, 3)
----------
[[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
[[13 14 15]
[17 18 19]
[21 22 23]
[25 26 27]]]
----------
[[[ 0 13 3]
[17 6 21]
[ 9 25 1]
[14 4 18]]
[[ 7 22 10]
[26 2 15]
[ 5 19 8]
[23 11 27]]]
相关的
>> x=0:23;
>> x=reshape(x,2,4,3);
>> x
x =
ans(:,:,1) =
0 2 4 6
1 3 5 7
ans(:,:,2) =
8 10 12 14
9 11 13 15
ans(:,:,3) =
16 18 20 22
17 19 21 23
>> save -v7 test3d x
在ipython:
In [192]: data = io.loadmat('test3d')
In [194]: x=data['x']
In [195]: x
Out[195]:
array([[[ 0., 8., 16.],
[ 2., 10., 18.],
[ 4., 12., 20.],
[ 6., 14., 22.]],
[[ 1., 9., 17.],
[ 3., 11., 19.],
[ 5., 13., 21.],
[ 7., 15., 23.]]])
In [196]: x.shape
Out[196]: (2, 4, 3)
显示为八度:
In [197]: x[:,:,0]
Out[197]:
array([[0., 2., 4., 6.],
[1., 3., 5., 7.]])
loadmat
已按F
顺序加载,具有相同的2,4,3形状。右边的ravel
生成原始的0:23数字:
In [200]: x.ravel(order='F')
Out[200]:
array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,
13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23.])
x
的转置产生(3,4,2)阶“C”数组:
In [207]: x.T[0]
Out[207]:
array([[0., 1.],
[2., 3.],
[4., 5.],
[6., 7.]])
In [208]: y=np.arange(24).reshape(3,4,2)
In [209]: y[0]
Out[209]:
array([[0, 1],
[2, 3],
[4, 5],
[6, 7]])
我写了一封很长的回信。看看它能解决你的问题。我指出有两个显著的区别:轴顺序和显示样式。