gpt4 book ai didi

python - Python 中的嵌套列表理解

转载 作者:太空狗 更新时间:2023-10-30 02:19:28 27 4
gpt4 key购买 nike

我有一个列表理解力,我正在努力思考,但我似乎无法理解我所追求的,我想看看是否有其他人知道如何做!

我的基本数据结构是这样的:

structure = [[np.array([[1,2,3],[4,5,6]]), np.array([[7,8,9],[10,11,12]])], [np.array([[13,14,15],[16,17,18]]), np.array([[19,20,21],[22,23,24]])]]

所以我得到了一个包含 numpy 数组子列表的整体列表,我想要的输出是某种分组(不管它是列表还是数组)与以下元素配对:

[1, 13]
[4, 16]
[2, 14]
[5, 17]
[3, 15]
[6, 18]

我以为我可以通过以下样式构造得到它:

output = [structure[i][0][j] for j in range(9) for i in range(len(structure))] 但是,唉,没有快乐。

我真的不介意它是否需要多个阶段 - 只是想将这些元素组合在一起!

(作为背景知识——我有各种模型输出的概率列表,在这些模型中我有一个训练列表和一个验证列表:

[[model_1], [model_2], ..., [model_n]]

其中 [model_1][[training_set], [validation_set], [test_set]]

[training_set]np.array([p_1, p_2, ..., p_n],[p_1, p_2, ..., p_n],...] )

我想将每个模型的项目 1 的预测组合在一起,并从中创建一个长度等于我拥有的模型数量的训练向量。然后,我想对 [training_set] 的第二行执行相同的操作。

如果这没有意义,请告诉我!

最佳答案

由于 structure 中的所有数组(和子列表)大小相同,您可以将其转换为一个更高维的数组:

In [189]: A=np.array(structure)
Out[189]:
array([[[[ 1, 2, 3],
[ 4, 5, 6]],

[[ 7, 8, 9],
[10, 11, 12]]],


[[[13, 14, 15],
[16, 17, 18]],

[[19, 20, 21],
[22, 23, 24]]]])

In [190]: A.shape
Out[190]: (2, 2, 2, 3)

reshape 和交换轴可以为您提供各种组合。

例如,您可以选择示例子列表中的值:

In [194]: A[:,0,:,:]
Out[194]:
array([[[ 1, 2, 3],
[ 4, 5, 6]],

[[13, 14, 15],
[16, 17, 18]]])

并 reshape 得到

In [197]: A[:,0,:,:].reshape(2,6)
Out[197]:
array([[ 1, 2, 3, 4, 5, 6],
[13, 14, 15, 16, 17, 18]])

并转置得到 6 行对:

In [198]: A[:,0,:,:].reshape(2,6).T
Out[198]:
array([[ 1, 13],
[ 2, 14],
[ 3, 15],
[ 4, 16],
[ 5, 17],
[ 6, 18]])

为了让它们按 1,4,2,5.. 的顺序排列,我可以先转置

In [208]: A[:,0,:,:].T.reshape(6,2)
Out[208]:
array([[ 1, 13],
[ 4, 16],
[ 2, 14],
[ 5, 17],
[ 3, 15],
[ 6, 18]])

关于python - Python 中的嵌套列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29710155/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com