In [88]: %timeit pd.DataFrame({'col1':np.repeat(aa,bb.size),'col2':np.tile(bb,aa.size)})
10 loops, best of 3: 25.4 ms per loop
In [89]: %timeit pd.DataFrame(list(product(aa,bb)), columns=['col1', 'col2'])
1 loop, best of 3: 1.28 s per loop
In [90]: aa.size
Out[90]: 1000
In [91]: bb.size
Out[91]: 1000
使用numpy工具:
如果不使用至少一个for循环,则无法执行此任务。您所能做的最好的方法是隐藏for循环或使用隐式
yield
调用来生成内存效率高的生成器。在itertools
导出此任务的有效函数,这些函数隐式使用yield
返回生成器:itertools.product
创建两个iterable的Cartesian product。zip(*products)
只是将得到的元组列表解压成两个单独的元组,如here。在更新:
B.M.利用numpy的解决方案要快得多——我建议使用他的方法:
尝试itertools.product:
^{pr2}$相关问题 更多 >
编程相关推荐