我在Python中运行模拟。模拟结果总结在数字矩阵列表中。有没有一个很好的导出格式我可以用来编写这个列表,以便以后我可以轻松地在Mathematica中读取文件,Mathematica会自动将其识别为矩阵列表?
答案 0 :(得分:2)
嗯,这取决于你的矩阵有多大以及速度或记忆是否值得关注。最简单的解决方案是自己创建纯文本 Mathematica 表达式。只需遍历您的矩阵并在Mathematica formate中创建它们的列表。这归结为在文件中编写大括号和数字
{mat1, mat2, ...}
其中mat1
等本身就是数字列表的列表。
如果您想要标准格式,那么您可以轻松查看import into Mathematica。击中眼睛的一件事(在被MTX击中之后,显然不起作用)是MAT format。快速搜索似乎表明,您可以write those files with Python。
关于你的评论
Pythonica看起来不错。遗憾的是,我在没有安装Mathematica的集群上运行Python模拟。我在我的个人电脑中使用Mathematica进行后期处理。
好的,但是包甚至没有500行代码。为什么不撇开它,只是取出你需要的东西:将任意Python列表转换为 Mathematica 代码的代码
_id_to_mathematica = lambda x: str(x)
def _float_to_mathematica(x):
return ("%e" % x).replace('e', '*10^')
def _complex_to_mathematica(z):
return 'Complex' + ('[%e,%e]' % (z.real, z.imag)).replace('e', '*10^')
def _str_to_mathematica(s):
return '\"%s\"' % s
def _iter_to_mathematica(xs):
s = '{'
for x in xs:
s += _python_mathematica[type(x)](x)
s += ','
s = s[:-1]
s += '}'
return s
_python_mathematica = {bool: _id_to_mathematica,
type(None): _id_to_mathematica,
int: _id_to_mathematica,
float: _float_to_mathematica,
long: _id_to_mathematica,
complex: _complex_to_mathematica,
iter: _iter_to_mathematica,
list: _iter_to_mathematica,
set: _iter_to_mathematica,
xrange: _iter_to_mathematica,
str: _str_to_mathematica,
tuple: _iter_to_mathematica,
frozenset: _iter_to_mathematica}
l = [[1, 2, 3], 1, [1, 5, [7, 3, 7, 8]]]
print(_iter_to_mathematica(l))
输出是一个字符串
{{1,2,3},1,{1,5,{7,3,7,8}}}
您可以直接保存到文件中并使用Get
将其加载到 Mathematica 。
答案 1 :(得分:1)
矩阵有多大?
如果它们不是太大,JSON格式将运行良好。我使用过这个,很容易在Python和Mathematica中使用它。
如果它们很大,我会试试HDF5。我没有从Python编写这个的经验,但我知道它可以存储多个数据集,因此它可以存储多个不同大小的矩阵。