使用numpy来获取多个列表的排列'项目

时间:2017-06-08 21:54:59

标签: arrays string python-3.x numpy

例如,如果我有以下数组:

arraya = ['z', 'q']
arrayb = ['t', 'f']

我想使用每个列表中的项目来创建'对'并获得以下输出:

['zt', 'zf', 'qt', 'qf']

我知道我可以找出一个陪审团操纵的方法来编写一个产生这个结果的函数,但是预建函数对我来说会更好。

2 个答案:

答案 0 :(得分:0)

这与您能够获得的内置接近。

>>> import itertools
>>> [''.join(x) for x in itertools.product(arraya, arrayb)]
['zt', 'zf', 'qt', 'qf']

找到2个列表/数组的笛卡尔积,然后连接产品。

答案 1 :(得分:0)

此功能没有内置功能,但您可以使用senderle的cartesian_product或pv' cartesian功能。哪个更快可能取决于您的用例。然后以下结果产生所需的结果:

itertools.product

这些功能比使用In [181]: x, y = np.arange(500), np.arange(500) In [185]: %timeit cartesian_product([x, y]) 1000 loops, best of 3: 797 µs per loop In [184]: %timeit cartesian_product2([x, y]) 1000 loops, best of 3: 1.44 ms per loop In [186]: %timeit cartesian([x, y]) 100 loops, best of 3: 4.71 ms per loop In [100]: %timeit np.array(list(IT.product(x, y))) 10 loops, best of 3: 112 ms per loop 更快。例如,

{{1}}