回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>假设我有一个<code>m</code>x<code>n</code>数组。对于每一行,我有要访问的<code>s</code>(带有<code>s</code><;=<code>n</code>)个条目。每行的条目数<code>s</code>是相同的,但是它们的索引不同。我想索引到<code>x</code>并提取这个<code>m</code>x<code>s</code>子数组。在</p>
<p>这里有一个具体的例子。假设我有以下数组:</p>
<pre><code>import numpy as np
import scipy.sparse
x = np.arange(4*5).reshape(-1,5)
Out[25]:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
</code></pre>
<p>下面是我想从每一行输入的内容:</p>
^{pr2}$
<p>这个数组表示从第0行开始,我需要输入0、1和2。在第1行中,我需要条目1、2和3。等等。结果应该是:</p>
<pre><code>array([[ 0, 1, 2],
[ 6, 7, 8],
[10, 12, 14],
[18, 19, 17]])
</code></pre>
<p>我可以通过写作获得上述结果:</p>
<pre><code>x[[[_] for _ in xrange(len(x))], col_ix]
</code></pre>
<p>基本上是:</p>
<pre><code>x[[[0],[1],[2],[3]], col_ix]
</code></pre>
<p>但我觉得有更好的方法。我应该注意到,最终目标是为这个子数组的每个条目分配0。在</p>