擅长:python、mysql、java
<p>一般来说,如果我们把优化看作是一个平衡秤,那么内存和运行时间就是它的两个称重盘。也就是说,内存优化和运行时优化有着间接的联系(不总是,但大多数时候)。现在,关于你的问题:</p>
<blockquote>
<p>Is there a way to create same object with numpy which works faster than itertools?</p>
</blockquote>
<p>当然有,但是你需要注意的另一点是抽象会给你更大的灵活性,<code>itertools.product</code>给你和Numpy没有的。如果可伸缩性在这个例子中不是一个重要的因素,你可以用Numpy来做,而且不要放弃任何好处。以下是使用<code>column_stack</code>、<code>repeat</code>和<code>tile</code>函数的一种方法:</p>
<pre><code>In [5]: np.column_stack((np.repeat(a, b.size),np.tile(b, a.size)))
Out[5]:
array([['1', 'a'],
['1', 'b'],
['1', 'c'],
['2', 'a'],
['2', 'b'],
['2', 'c'],
['3', 'a'],
['3', 'b'],
['3', 'c']], dtype='<U21')
</code></pre>
<p>现在,仍然有一些方法可以通过使用诸如<code>U2</code>,<code>U1</code>等更轻量级的类型来使这个数组占用更少的内存</p>
^{pr2}$