如何在python中保存3D数组并在mathematica中导入它

Jea*_*nne 3 3d wolfram-mathematica save python-2.7

我想在python上的.txt文件或.csv文件中保存一个3D二进制数组,并将其导入到mathematica中.

我用Google搜索,我找到了很多答案,我试试这个:

import numpy as np
a=np.zeros((2,3,4))
a[0,0,0]=10
cPickle.dump( a, open( "matrix.txt", "wb" ) )
Run Code Online (Sandbox Code Playgroud)

在mathematica中我使用了Import ["matrix.txt","Data"]而我没有得到我所期望的

IN[]:Import["matrix.txt", "Data"]

  Out[]:{{"cnumpy.core.multiarray"}, {"_reconstruct"}, {"p1"}, {"(cnumpy"}, \
    {"ndarray"}, {"p2"}, {"(I0"}, {"tS'b'"}, {"tRp3"}, {"(I1"}, {"(I2"}, \
    {"I3"}, {"I4"}, {"tcnumpy"}, {"dtype"}, {"p4"}, {"(S'f8'"}, {"I0"}, \
    {"I1"}, {"tRp5"}, {"(I3"}, {"S'<'"}, {"NNNI-1"}, {"I-1"}, {"I0"}, \
    {"tbI00"}, \
    {"S'\\x00\\x00\\x00\\x00\\x00\\x00$@\\x00\\x00\\x00\\x00\\x00\\x00\\\
    x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\\
    x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\\
    x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\\
    x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\\
    x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\\
    x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\\
    x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\\
    x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\\
    x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\\
    x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\\
    x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\\
    x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\\
    x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'"}, {"tb."}}
Run Code Online (Sandbox Code Playgroud)

Jea*_*nne 7

诀窍是将数组展平为2D数组:

import numpy as np
a=np.zeros((2,3,4))
a[0,0,0]=10
b=a.reshape(1,24)

np.savetxt("/matrix.CSV",b,delimiter=',')
Run Code Online (Sandbox Code Playgroud)

然后在导入后在Mathematica中将其转换为3D,我们可以使用:

 file=Import["matrix.CSV","Data"]
 matrix=ArrayReshape[file, {2, 3, 4}]
Run Code Online (Sandbox Code Playgroud)

  • 恭喜您回答自己的问题并感谢您发布了它! (2认同)