我使用的是一个不同大小的列表。例如,alternativesList可以在一个迭代中包含4个列表,在另一个迭代中包含7个列表。在
我要做的是在不同的列表中捕捉每个单词的组合。在
就这么说吧
a= [1,2,3]
alternativesList.append(a)
b = ["a","b","c"]
alternativesList.append(b)
productList = itertools.product(*alternativesList)
将创建
[(1,'a'),(1,'b'),(1,'c'),(2,'a'),(2,'b'),(2,'c'),(3,'a'),(3,'b'),(3,'c')]
这里的一个问题是,我的productList太大,可能会导致内存问题。所以我使用productList作为对象,稍后再对其进行迭代。在
我想知道的是,有没有一种方法可以用numpy创建比itertools更快的对象?在
通过显式指定复合数据类型,可以避免numpy试图查找catchall数据类型时出现的一些问题:
代码+一些时间安排:
样本输出:
^{pr2}$一般来说,如果我们把优化看作是一个平衡秤,那么内存和运行时间就是它的两个称重盘。也就是说,内存优化和运行时优化有着间接的联系(不总是,但大多数时候)。现在,关于你的问题:
当然有,但是你需要注意的另一点是抽象会给你更大的灵活性,
itertools.product
给你和Numpy没有的。如果可伸缩性在这个例子中不是一个重要的因素,你可以用Numpy来做,而且不要放弃任何好处。以下是使用column_stack
、repeat
和tile
函数的一种方法:现在,仍然有一些方法可以通过使用诸如
^{pr2}$U2
,U1
等更轻量级的类型来使这个数组占用更少的内存相关问题 更多 >
编程相关推荐