我正在做一些相当简单的事情,我正在尝试将列表列表转换为np.array:
rows = [[1, 'None', 'None', 0, 0, 'None', 0, 0],
[2, 'None', 'None', 0, 0, 'None', 0, 0],
[3, 'None', 'None', 0, 0, 'None', 0, 0],
[4, 'None', 'None', 0, 0, 'None', 0, 0],
[5, 'None', 'None', 0, 0, 'None', 0, 0]]
dtypes = np.dtype(
[
('_ID', np.int),
('SOURCE_LILST', '|S1024'),
('PRI_SOURCE', '|S256'),
('PRI_SOURCE_CNT', np.int32),
('PRI_SOURCE_PER', np.float64),
('SEC_SOURCE', '|S256'),
('SEC_SOURCE_CNT', np.int32),
('SEC_SOURCE_PER', np.float64)
]
)
array = np.array(rows, dtypes) # error raised
任何人都可以看到这个问题吗?
谢谢
答案 0 :(得分:2)
您的rows
对象应该是元组列表,而不是列表列表:
rows = [(1, 'None', 'None', 0, 0, 'None', 0, 0),
(2, 'None', 'None', 0, 0, 'None', 0, 0),
(3, 'None', 'None', 0, 0, 'None', 0, 0),
(4, 'None', 'None', 0, 0, 'None', 0, 0),
(5, 'None', 'None', 0, 0, 'None', 0, 0)]
dtypes = np.dtype(
[
('_ID', np.int),
('SOURCE_LILST', '|S1024'),
('PRI_SOURCE', '|S256'),
('PRI_SOURCE_CNT', np.int32),
('PRI_SOURCE_PER', np.float64),
('SEC_SOURCE', '|S256'),
('SEC_SOURCE_CNT', np.int32),
('SEC_SOURCE_PER', np.float64)
]
)
array = np.array(rows, dtypes) # no error raised
一些额外的提示:
dtype
,并且仍然可以看到问题。这有助于消除可能的错误,例如您是否正确指定了所有这些字符串等。更一般地说,请阅读this。这不仅对提出更好的问题很有帮助,而且在你甚至可以提出问题之前找出问题也是一种有用的方法。