所以我有一个3 x 3矩阵的嵌套列表
a = [ [[1,0,3],[0,1,2],[-1,4,-8]], ... ]
我试图找到一种有效的方法将其转换为Mathematica可以阅读的列表。在这种情况下,我考虑将a
转换为字符串并将每个[with {,and each]替换为},然后将此字符串保存到文件中。我的猜测是,这不是最有效的方法。
有没有建议将高效的算法从python嵌套数组转换为mathematica数组?
把它作为numpy.array
和flatten
它:
import numpy as np
arr = [[[0, 0, 0], [0, 0, 0], [0, 0, 0]],
[[0, 0, 0], [0, 0, 0], [0, 0, 0]],
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]]
np.array(arr).flatten()
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0])
或者如果您更喜欢list
,请添加tolist()
:
np.array(arr).flatten().tolist()
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0]
作为一般规则,如果您担心读/写文件的效率,您应该读/写二进制数据。相反,如果您致力于文本文件,请不要担心效率问题。
我认为你的提议中没有任何重大错误,无法将嵌套数组写入字符串,然后用Mathematica喜欢的括号替换括号。
但就个人而言,如果嵌套数组是常规的,如果我们坚持使用文本文件,我建议写一个文件:
3, 3, ...
(或可能是..., 3, 3
)3
写入一行如果嵌套数组不规则,您可能需要设计一个更复杂的标题行来告诉Mathematica如何扩展以下数字。但无论你做什么,都要保持简单。
您可以使用Mathematica最近的ExternalEvaluate["Python", ...]
功能做得更好,避免文件写入和阅读。但这并不是我经历过的经历。
您可以使用Import
与"JSON"
或"BSON"
或"PythonExpression"
从文件中导入数据。其中任何一个都可以由Python直接导出。
Wolfram语言(a.k.a.Mathematica)可以导入和导出many formats,上面是它支持的一些Basic Formats。
希望这可以帮助。