擅长:python、mysql、java
<p>实际上<code>savetxt</code>正在做:</p>
<pre><code>for row in your_array:
print(fmt % tuple(row))
</code></pre>
<p>其中<code>fmt</code>是由<code>fmt</code>参数(或默认参数)和列数以及分隔符构造的。</p>
<p>你有一个1d数组的对象(数组)。所以写/印</p>
<pre><code> print(fmt % tuple(element))
</code></pre>
<p><code>%s</code>是唯一可以处理数组(或其他常规对象)的格式。</p>
<p><code>savetxt</code>用于二维数字数组,这类数组将产生需要<code>csv</code>列。尝试在其他事情上使用它,比如这个对象数组,会让你头疼。</p>
<pre><code>In [2]: A = np.empty((3,),dtype=object)
In [3]: A[:] = [np.arange(3),np.arange(1,4), np.arange(-3,0)]
In [4]: A
Out[4]: array([array([0, 1, 2]), array([1, 2, 3]), array([-3, -2, -1])], dtype=object)
In [6]: np.savetxt('test',A,fmt='%s')
In [7]: cat test
[0 1 2]
[1 2 3]
[-3 -2 -1]
</code></pre>
<p>迭代1d数组时,它必须跳过<code>tuple</code>。无论如何,您所能做的最好的就是<code>%s</code>格式。否则,请编写自己的自定义文件编写器。<code>savetxt</code>不是什么特别或强大的东西。</p>
<pre><code>In [9]: for row in A:
...: print('%s'%row)
[0 1 2]
[1 2 3]
[-3 -2 -1]
</code></pre>