我知道itertools.product
用于迭代多个维度的关键字列表。例如,如果我有这个:
categories = [
[ 'A', 'B', 'C', 'D'],
[ 'E', 'F', 'G', 'H'],
[ 'I', 'J', 'K', 'L']
]
我用itertools.product()
覆盖它,我有一些类似的东西:
>>> [ x for x in itertools.product(*categories) ]
('A', 'E', 'I'),
('A', 'E', 'J'),
('A', 'E', 'K'),
('A', 'E', 'L'),
('A', 'F', 'I'),
('A', 'F', 'J'),
# and so on...
对于numpy
的数组,是否有一种等效的、直接的方法来做同样的事情?
这个问题已经问过好几次了:
Using numpy to build an array of all combinations of two arrays
itertools product speed up
第一个链接有一个有效的numpy解决方案,据称比itertools快几倍,尽管没有提供基准。这段代码是由一个名为pv的用户编写的。如果你觉得有用,请按照链接并支持他的回答:
然而,在同一篇文章中,Alex Martelli——他是SO-write的一位伟大的Python专家——认为itertools是完成这项任务的最快方法。这是一个快速的基准,证明了亚历克斯的话。
输出:
所以,你绝对应该使用itertools。
相关问题 更多 >
编程相关推荐