轻松将列表列表转换为用于大数据的 numpy Multidim 数组

Posted

技术标签:

【中文标题】轻松将列表列表转换为用于大数据的 numpy Multidim 数组【英文标题】:Easily converting List of lists to numpy Multidim array for big data 【发布时间】:2018-01-15 18:57:17 【问题描述】:

假设我有 '3 deep' 列表列表

len(list) --> 500
len(list[0]) --> 25
len(list[0][0]) --> 100

我想转换成一个形状为 (500, 25, 100) 的 numpy 数组。以计算方式进行此操作的最有效方法是什么?假设列表非常非常大。

【问题讨论】:

np.asarray()? 【参考方案1】:

您的清单:

l = [[[1,2],[3,4]],[[5,6],[7,8]],[[9,10],[11,12]]]

你的 numpy 数组:

arr = np.array(l)
#array([[[ 1,  2],
#        [ 3,  4]],
#
#      [[ 5,  6],
#       [ 7,  8]],
#
#       [[ 9, 10],
#        [11, 12]]])

【讨论】:

【参考方案2】:

我假设你想转换它,然后想在它的索引上运行一个循环:

l=[[[1,2],[3,4]],[[5,6],[7,8]],[[9,10],[11,12]]]
# convert
a=np.asarray(l)
# loop
for (ix,iy,iz),val in np.ndenumerate(a):
    print(ix, iy, iz, a[ix,iy,iz])

给予

0 0 0 1
0 0 1 2
0 1 0 3
0 1 1 4
1 0 0 5
1 0 1 6
1 1 0 7
1 1 1 8
2 0 0 9
2 0 1 10
2 1 0 11
2 1 1 12

【讨论】:

以上是关于轻松将列表列表转换为用于大数据的 numpy Multidim 数组的主要内容,如果未能解决你的问题,请参考以下文章

将列表列表的字符串转换为 Numpy 数组

将 2d numpy 数组转换为列表列表 [重复]

Keras:ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型列表)

使用列表中的标签将 numpy 数组转换为 pandas 数据框

将列表列转换为 2D numpy 数组

尝试将列表转换为 numpy 数组时出现 KeyError:0