首页 > 解决方案 > 将列表列表转换为 Numpy 数组而不结转列表

问题描述

我正在尝试将列表列表和列表中的其他数字转换为 numpy 数组。

到目前为止,我已经尝试过了,但列表仍然延续到数组:

ll = [['119', '222', '219', '293'], '4', ['179', '124', '500', '235'], '7']
arrays = np.array(ll)

输出是:

array([list(['119', '222', '219', '293']), '4', list(['179', '124', '500', '235']), '7'], dtype=object)

我想要的输出是这样的:

[(array([ 119, 222, 219, 293]), 4), (array([ 179,  124, 500, 235]), 7)]

有没有办法做到这一点。在过去的两天里,我一直在努力解决这个问题。

标签: pythonarraysnumpy

解决方案


由于您想将每两个元素分组为一个元组,然后将每个元组的第一个元素转换为一个 numpy 数组,您可以使用列表推导zip

[(np.array(i, dtype=int), int(j)) for i, j in zip(ll[::2], ll[1::2])]

# Result
[(array([119, 222, 219, 293]), 4), (array([179, 124, 500, 235]), 7)]

dtype请注意,我在 numpy 数组构造函数中指定 a以将数组转换为整数。

如果您担心在此处制作列表的两个副本,您也可以简单地使用基于范围的索引:

[(np.array(ll[i], dtype=int), int(ll[i+1])) for i in range(0, len(ll), 2)]

推荐阅读