【问题标题】:Making a list of tuples (where each tuple contains two numpy arrays)制作一个元组列表(每个元组包含两个 numpy 数组)
【发布时间】:2016-12-07 18:38:14
【问题描述】:

我希望构建一个模仿 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.]]))]

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

【问题讨论】:

    标签: python arrays list numpy tuples


    【解决方案1】:

    如果您可以创建列表列表,那么您可以简单地将其转换为元组列表,如下所示:

    [tuple(v) for v in list_of_list]
    

    【讨论】:

      【解决方案2】:

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

      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 元素元组,我认为您不需要。您的目标似乎只是一个元组列表。

      【讨论】:

        猜你喜欢
        • 2019-08-12
        • 1970-01-01
        • 2015-10-30
        • 1970-01-01
        • 2015-04-14
        • 1970-01-01
        • 2020-10-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多