【问题标题】:itertools.product how to generate an n-dimensional array as defined by a tuple [closed]itertools.product 如何生成由元组定义的 n 维数组 [关闭]
【发布时间】:2019-09-14 13:26:52
【问题描述】:

我希望使用 itertools.product(或类似的),从初始元组生成一组矩阵地址(作为元组)。

例如..

 (5,)  # return the addresses for a 1-dimensional matrix of 5 columns,
 (4,3) # return the addresses for a 2-dimensional matrix of 4 columns and 3 rows.
 (5, 3, 2) # ditto for a 3D matrix 

【问题讨论】:

    标签: python matrix tuples itertools cartesian-product


    【解决方案1】:

    以元组init_tuple 设置为(4, 3) 为例

    # TL;DR
    values = product(*[range(0, i) for i in init_tuple])
    

    这是如何工作的?

    product([1,2],[3,4]). # generates the cross product.
    >(1, 3)
    >(1, 4)
    >(2, 3)
    >(2, 4)
    

    所以我想要元组中每个i 的范围(0, i) 的叉积。 这意味着我想要这样的东西..

    product([0,1,2,3],[0,1,2])
    

    获取元组中每个 i 的范围列表非常简单。

    [range(0, i) for i in init_tuple]
    >[range(0, 3), range(0, 4)]
    

    提供列表作为参数只是一个*。 (参数解包很酷)。

    values = product(*[range(0, i) for i in init_tuple])
    
    
    >(0, 0)
    >(0, 1)
    >(0, 2)
    >(0, 3)
    >(1, 0)
    >(1, 1)
    >(1, 2)
    >(1, 3)
    >(2, 0)
    >(2, 1)
    >(2, 2)
    >(2, 3)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      • 2013-02-01
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多