Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 使用numpy获取多个列表的排列';项目_Arrays_String_Python 3.x_Numpy - Fatal编程技术网

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

Arrays 使用numpy获取多个列表的排列';项目,arrays,string,python-3.x,numpy,Arrays,String,Python 3.x,Numpy,例如,如果我有以下数组: arraya = ['z', 'q'] arrayb = ['t', 'f'] 我想使用每个列表中的项目创建“对”,并获得以下输出: ['zt', 'zf', 'qt', 'qf'] 我知道我可以想出一种操纵陪审团的方法来编写一个函数来产生这个结果,但是对于我来说,一个预构建的函数会更好 这是您所能获得的最接近内置的 >>> import itertools >>> [''.join(x) for x in itertools.p

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

arraya = ['z', 'q']
arrayb = ['t', 'f']
我想使用每个列表中的项目创建“对”,并获得以下输出:

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

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

这是您所能获得的最接近内置的

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

找到两个列表/数组的笛卡尔乘积,然后连接该乘积。

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

In [40]: cartesian_product([['z', 'q'], ['t', 'f']]).ravel().view('<U2')
Out[40]: 
array(['zt', 'zf', 'qt', 'qf'], 
      dtype='<U2')

乘法在数学上并没有定义在向量运算中,这让我怀疑是否有一个预先构建的方法来实现这一点。由于这个方法的特殊需要,您似乎不得不强制使用它。您试图将它用于哪个应用程序,使您将此操作视为“乘法”?你是想实现多项式乘法还是什么?对不起,选错了词。对我不好。我更正确的意思是,使用两个不同列表中的项,沿着数组项排列。我将更新问题以反映这一点。
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