回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个由元组的所有组合组成的列表,每个元素只能是-1或1。列表可以生成为:</p>
<pre><code>N=2
list0 = [p for p in itertools.product([-1, 1], repeat=N)]
</code></pre>
<p>例如,如果元组有<code>N=2</code>个元素:</p>
<blockquote>
<p>list0 = [(-1, -1), (-1, 1), (1, -1), (1, 1)]</p>
</blockquote>
<p>因此,元组的总数是<code>2^2=4</code>。你知道吗</p>
<p>如果元组有<code>N=3</code>个元素:</p>
<blockquote>
<p>list0 = [(-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1),
(1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]</p>
</blockquote>
<p>我关心的是:</p>
<p>现在我想得到列表中任意一对元组(包括元组本身的元组)之间的点积的所有结果。所以对于<code>N=2</code>会有<code>6(pairs) + 4(itself) = 10 combinations;</code>对于<code>N=3</code>会有<code>28(pairs) + 8(itself) = 36 combinations.</code></p>
<p>对于小型<code>N</code>,我可以做如下操作:</p>
<pre><code>for x in list0:
for y in list0:
print(np.dot(x,y))
</code></pre>
<p>但是,假设我已经有了list0,如果N很大,比如~50,那么计算所有点积可能性的最佳方法是什么?你知道吗</p>