在Python中重塑Julia存储的数组

时间:2018-11-06 18:01:11

标签: python julia

一段时间以来,我一直在努力解决这个问题,因此,我决定向您寻求帮助。因此,简而言之,我的问题是以下...

我所有的代码都在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示例中获得的结果相同的结果?。

1 个答案:

答案 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会颠倒此处所需的尺寸。