<pre><code>In [72]: arr = np.array(['5, 0, -150, 0', '6, 0, -10, 0',
...: '7, 2.5881904510252, 9.6592582628907, 0',
...: '8, 5, 8.6602540378444, 0',
...: '9, 7.0710678118655, 7.0710678118655, 0',
...: '10, 8.6602540378444, 5, 0'], dtype='<U63')
</code></pre>
<p>其他人提出的列表理解是正确的方法,但可以简化:</p>
<pre><code>In [73]: [line.split(',') for line in arr]
Out[73]:
[['5', ' 0', ' -150', ' 0'],
['6', ' 0', ' -10', ' 0'],
['7', ' 2.5881904510252', ' 9.6592582628907', ' 0'],
['8', ' 5', ' 8.6602540378444', ' 0'],
['9', ' 7.0710678118655', ' 7.0710678118655', ' 0'],
['10', ' 8.6602540378444', ' 5', ' 0']]
</code></pre>
<p><code>np.array</code>可以处理嵌套列表,并转换为浮点:</p>
<pre><code>In [74]: np.array(_, dtype=float)
Out[74]:
array([[ 5. , 0. , -150. , 0. ],
[ 6. , 0. , -10. , 0. ],
[ 7. , 2.58819045, 9.65925826, 0. ],
[ 8. , 5. , 8.66025404, 0. ],
[ 9. , 7.07106781, 7.07106781, 0. ],
[ 10. , 8.66025404, 5. , 0. ]])
</code></pre>
<p>原始对象是数组而不是列表这一事实并不能增强这种转换。实际上,在数组上迭代要比在等价列表上迭代慢。你知道吗</p>