擅长:python、mysql、java
<p>在内存中,unicode字符串表示为<a href="http://en.wikipedia.org/wiki/UCS-2" rel="noreferrer">UCS-2</a>或<a href="http://en.wikipedia.org/wiki/UCS-4" rel="noreferrer">UCS-4</a>,这取决于Python解释器的编译方式。您的文件是在<a href="http://en.wikipedia.org/wiki/UTF-8" rel="noreferrer">UTF-8</a>中编码的,因此在将其映射到NumPy数组之前需要重新编码。<code>loadtxt()</code>无法为您重新编码——毕竟NumPy主要针对数值数组。</p>
<p>假设每行的字符数相同,也可以使用更有效的变量</p>
<pre><code>s = codecs.open("new.txt", encoding="utf-8").read()
arr = numpy.frombuffer(s, dtype="<U3")
</code></pre>
<p>这将在字符串中包含换行符。不包括它们,使用</p>
<pre><code>arr = numpy.frombuffer(s.replace("\n", ""), dtype="<U2")
</code></pre>
<p><strong>编辑</strong>:如果文件行的长度不同,并且您希望避免中间列表,则可以使用</p>
<pre><code>arr = numpy.fromiter(codecs.open("new.txt", encoding="utf-8"), dtype="<U2")
</code></pre>
<p>不过,我不确定这是否会在内部创建一些临时列表。</p>