<pre><code>In [117]: A = np.array([[28,39,52],[77,80,66],[7,18,24],[9,97,68]])
In [118]: B = [1,0,2,0]
</code></pre>
<p>要从每行中选择一个元素,我们需要使用匹配<code>B</code>的数组对行进行索引:</p>
<pre><code>In [120]: A[np.arange(4),B]
Out[120]: array([39, 77, 24, 9])
</code></pre>
<p>我们可以设置相同的元素:</p>
<pre><code>In [121]: A[np.arange(4),B] = 0
In [122]: A
Out[122]:
array([[28, 0, 52],
[ 0, 80, 66],
[ 7, 18, 0],
[ 0, 97, 68]])
</code></pre>
<p>这最终会使用索引(0,1)、(1,0)、(2,2)、(3,0)对点进行索引。你知道吗</p>
<p>基于列表的“转置”生成相同的对:</p>
<pre><code>In [123]: list(zip(range(4),B))
Out[123]: [(0, 1), (1, 0), (2, 2), (3, 0)]
</code></pre>