<p>从字符串到列表再到每个元素包含一个单词的数组:</p>
<pre><code>In [402]: astr = "This is a message for the display array"
In [403]: alist = astr.split()
In [404]: alist
Out[404]: ['This', 'is', 'a', 'message', 'for', 'the', 'display', 'array']
In [405]: arr = np.array(alist)
In [406]: arr
Out[406]:
array(['This', 'is', 'a', 'message', 'for', 'the', 'display', 'array'],
dtype='<U7')
In [407]: arr.shape
Out[407]: (8,)
</code></pre>
<p>我使用的是PY3,因此数据类型是<code>U7</code>,由<code>np.array</code>自动选择,使其足够大以容纳列表中最大的字符串。在</p>
<p>对于包含单个字符的数组:</p>
^{pr2}$
<p>从字符串中生成一个由单个字符组成的数组:</p>
<pre><code>In [430]: np.array(list(astr))
Out[430]:
array(['T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 'm', 'e', 's',
's', 'a', 'g', 'e', ' ', 'f', 'o', 'r', ' ', 't', 'h', 'e', ' ',
'd', 'i', 's', 'p', 'l', 'a', 'y', ' ', 'a', 'r', 'r', 'a', 'y'],
dtype='<U1')
</code></pre>
<p>将单词列表映射到单字符数组有点繁琐。<code>This</code>进入{<cd4>}等</p>
<hr/>
<p>下面是一种将单词列表映射到数组的方法:</p>
<pre><code>In [462]: alist
Out[462]: ['This', 'is', 'a', 'message', 'for', 'the', 'display', 'array']
In [463]: ''.join(alist) # back to one string
Out[463]: 'Thisisamessageforthedisplayarray'
In [464]: np.array(list(''.join(alist))) # a flat array of char
Out[464]:
array(['T', 'h', 'i', 's', 'i', 's', 'a', 'm', 'e', 's', 's', 'a', 'g',
'e', 'f', 'o', 'r', 't', 'h', 'e', 'd', 'i', 's', 'p', 'l', 'a',
'y', 'a', 'r', 'r', 'a', 'y'],
dtype='<U1')
In [465]: _.shape
Out[465]: (32,)
</code></pre>
<p>或者我可以将字符列表复制到现有数组中(使用<code>flat</code>将其视为1d):</p>
<pre><code>In [466]: arr = np.zeros((4,10), 'U1')
In [467]: arr.flat[:32] = list(''.join(alist))
In [468]: arr
Out[468]:
array([['T', 'h', 'i', 's', 'i', 's', 'a', 'm', 'e', 's'],
['s', 'a', 'g', 'e', 'f', 'o', 'r', 't', 'h', 'e'],
['d', 'i', 's', 'p', 'l', 'a', 'y', 'a', 'r', 'r'],
['a', 'y', '', '', '', '', '', '', '', '']],
dtype='<U1')
</code></pre>
<p>如果我在单词之间加上空格:</p>
<pre><code>In [471]: arr.flat[:39] = list(' '.join(alist))
In [472]: arr
Out[472]:
array([['T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' '],
['m', 'e', 's', 's', 'a', 'g', 'e', ' ', 'f', 'o'],
['r', ' ', 't', 'h', 'e', ' ', 'd', 'i', 's', 'p'],
['l', 'a', 'y', ' ', 'a', 'r', 'r', 'a', 'y', '']],
dtype='<U1')
</code></pre>