我想将我的长python 2D列表转换为NumPy 2D数组,但转换后列表中的列表仍然保持为普通列表:
import numpy as np
# The list should be longer, but this long is enogh to state the problem
# And please don't ask why is it about zombies
list = [['<sup>4</sup>;{{P|Mummy Zombie|2}}'],
['<sup>2</sup>;{{P|Ra Zombie|2}}'],
['<sup>4</sup>;{{P|Mummy Zombie|2}}', '<sup>5</sup>;{{P|Mummy Zombie|2}}']]
np.array(list)
list
>>> [list(['<sup>4</sup>;{{P|Mummy Zombie|2}}'])
list(['<sup>2</sup>;{{P|Ra Zombie|2}}'])
list(['<sup>4</sup>;{{P|Mummy Zombie|2}}', '<sup>5</sup>;{{P|Mummy Zombie|2}}'])]
我所期望的:
list = [['1', '7', '0'], ['6', '2', '5'], ['7', '8', '9'], ['41', '10', '20']]
np.array(list)
list
>>>[['1' '7' '0']
['6' '2' '5']
['7' '8' '9']
['41' '10' '20']]
这个问题有什么解决办法吗?或者我应该将此作为bug报告给NumPy?
首先,使用list作为变量名。它是一个内置类型。因此,你不应该使用它。
之后,列表数组每行分别包含1、1、2个元素。每一行的列号应该相等
list2 = [['<sup>4</sup>;{{P|Mummy Zombie|2}}'],
['<sup>2</sup>;{{P|Ra Zombie|2}}'],
['<sup>4</sup>;{{P|Mummy Zombie|2}}'],
['<sup>5</sup>;{{P|Mummy Zombie|2}}']]
np.array(list2)
>>> array([['<sup>4</sup>;{{P|Mummy Zombie|2}}'],
['<sup>2</sup>;{{P|Ra Zombie|2}}'],
['<sup>4</sup>;{{P|Mummy Zombie|2}}'],
['<sup>5</sup>;{{P|Mummy Zombie|2}}']], dtype='<U33')
np.array(list2).shape
>>>(4, 1)