制作元组列表(每个元组包含两个numpy数组)

时间:2016-12-07 18:38:14

标签: python arrays list numpy tuples

我希望建立一个模仿MNIST手写集的训练集。具体来说,训练集是以下形式的元组列表:

example_tuple = (np.array([[0.],[0.],[0.],[0.],[0.]], dtype=np.float32), np.array([[0.],[0.]]))

我循环遍历for循环,创建一个相同形状的新元组,并希望将其附加到第一个元组,以便结果是列表类型。当然,元组不能被追加,所以我不确定是否要创建一个包含两个numpy数组的元组列表。

理想情况下,培训数据的最终形式如下:

[(array([[ 0.],
       [ 0.],
       [ 0.],
       [ 0.],
       [ 0.]], dtype=float32), array([[ 0.],
       [ 0.]])), (array([[1.],
       [1.],
       [1.],
       [1.],
       [1.]], dtype=float32), array([[1.],
       [1.]]))]

如果有任何其他信息我可以提供帮助,请告知我们。提前谢谢!

2 个答案:

答案 0 :(得分:0)

如果您可以创建列表列表,那么您只需将其转换为这样的元组列表:

[tuple(v) for v in list_of_list]

答案 1 :(得分:0)

您是否只能创建元组,并将它们附加到列表中。这会产生您想要的结果:

In [31]: alist=[]
In [32]: for i in range(3):
    ...:     tup = np.ones((5,1))*i, np.ones((2,1))*i
    ...:     alist.append(tup)
    ...:     
In [33]: alist
Out[33]: 
[(array([[ 0.],
         [ 0.],
         [ 0.],
         [ 0.],
         [ 0.]]), array([[ 0.],
         [ 0.]])), (array([[ 1.],
         [ 1.],
         [ 1.],
         [ 1.],
         [ 1.]]), array([[ 1.],
         [ 1.]])), (array([[ 2.],
         [ 2.],
         [ 2.],
         [ 2.],
         [ 2.]]), array([[ 2.],
         [ 2.]]))]

虽然你不能append一个元组,但你可以将它们中的两个连接起来,例如: alist[0]+alist[1],但这会创建一个4元素元组,我认为你不想要它。您的目标似乎只是一个元组列表。