一段时间以来,我一直在努力解决这个问题,因此,我决定向您寻求帮助。因此,简而言之,我的问题是以下...
我所有的代码都在Julia中,并且它们所处理的数据已按Julia的方式存储(我猜是在列主序中),但是现在我需要在python中运行一些代码来读取其中的一些数据,重塑它。但是,由于在两个lenguajes中存储和读取数据的方式不同,重塑的行为并不像我期望的那样(不是那是错误的,不是我想要的) 举个例子... 在Julia中,当我将一维数组重塑为(2,3,4)数组尺寸时,我得到:
julia> a=collect(1:24);
julia> r=reshape(a,2,3,4)
2×3×4 Array{Int64,3}:
[:, :, 1] =
1 3 5
2 4 6
[:, :, 2] =
7 9 11
8 10 12
[:, :, 3] =
13 15 17
14 16 18
[:, :, 4] =
19 21 23
20 22 24
在python中,我得到了
b=np.arange(1,25);
r=b.reshape(4,2,3)
给予
In [200]: r
array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 7, 8, 9],
[10, 11, 12]],
[[13, 14, 15],
[16, 17, 18]],
[[19, 20, 21],
[22, 23, 24]]])
是否有任何方法可以在Python中获得与Julia示例中获得的结果相同的结果?。
答案 0 :(得分:1)
您可以写:
>>> np.transpose(b.reshape(4,3,2), (2,1,0))
array([[[ 1, 7, 13, 19],
[ 3, 9, 15, 21],
[ 5, 11, 17, 23]],
[[ 2, 8, 14, 20],
[ 4, 10, 16, 22],
[ 6, 12, 18, 24]]])
编辑:
如https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.transpose.html中所述,np.transpose
的第二个参数根据作为第二个参数给出的值对数组的轴进行置换。实际上,在这种情况下,您可以只写np.transpose(b.reshape(4,3,2))
,因为默认情况下np.transpose
会颠倒此处所需的尺寸。