<p>这个答案集中在<code>json.dump()</code>和{<cd2>}以及如何将它们与numpy数组一起使用。如果您尝试这样做,Python将返回一个错误,指出ndarray不是JSON可序列化的:</p>
<pre><code>import numpy as np
import json
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
json.dumps(a)
</code></pre>
<blockquote>
<pre><code>TypeError: Object of type 'ndarray' is not JSON serializable
</code></pre>
</blockquote>
<p>您可以通过先将其转换为列表来避免这种情况。下面是两个工作示例:</p>
<h3><code>json.dumps()</code></h3>
<p><code>json.dumps()</code>似乎最接近R的<code>dput()</code>,因为它允许您直接从控制台复制粘贴结果:</p>
^{pr2}$
<h3><code>json.dump()</code></h3>
<p>{{cd5>还是很有用的。<code>json.dump()</code>将把你的对象编码成一个json文件。在</p>
<pre><code># Encode:
savehere = open('file_location.json', 'w')
json.dump(a.tolist(), savehere)
</code></pre>
<p>你可以在其他地方解码:</p>
<pre><code># Decode:
b = open('file_location.json', 'r').read() # b is '[[1, 2, 3], [4, 5, 6], [7, 8, 9]]'
c = json.loads(b)
</code></pre>
<p>然后您可以再次将其转换回numpy数组:</p>
<pre><code>c = np.array(c)
</code></pre>
<h2>更多信息</h2>
<p>有关避免“不可序列化”错误,请参阅:</p>
<ul>
<li><p><a href="https://stackoverflow.com/questions/26646362/numpy-array-is-not-json-serializable">numpy array is not json serializable</a></p></li>
<li><p><a href="https://stackoverflow.com/questions/3768895/how-to-make-a-class-json-serializable">how to make classes json serializable</a>(有点无关,但很有趣)</p></li>
</ul>