回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>假设我有以下列表:</p>
<pre><code>rays_all = [np.array(r11, r21, r31, r41),
np.array(r12, r22, r32, r42),
np.array(r13, r23, r33, r43),
np.array(r14, r24, r34, r44)]
</code></pre>
<p>所有的r11、r21、r31等都是具有形状(3L,)的数组(把它看作是三维空间中的向量)。你知道吗</p>
<p>如果我想提取<code>np.array(r14, r24, r34, r44)</code>的(4L,3L)数组,我只需要使用<code>rays_all[-1]</code>。如果我想附加一个新的<code>np.array(r15, r25, r35, r45)</code>数组,我只需要使用<code>rays_all.append</code>。你知道吗</p>
<p>现在我以另一种方式排列上述向量(r11、r12等):</p>
<pre><code>ray1 = [r11, r12, r13, r14]
ray2 = [r21, r22]
ray3 = [r31, r32, r33]
ray4 = [r41, r42, r43, r44]
</code></pre>
<p>每个“光线”现在都有自己的长度不同的列表。如果要提取数组结构中每个列表的最后一个元素,即<code>np.array([r14,r22,r33,r44])</code>,最有效的方法是什么?另一方面,如果我想将数组<code>np.array([r15,r23,r34,r45])</code>中的元素添加到列表中</p>
<pre><code>ray1 = [r11, r12, r13, r14, r15]
ray2 = [r21, r22, r23]
ray3 = [r31, r32, r33, r34]
ray4 = [r41, r42, r43, r44, r45]
</code></pre>
<p>最有效的方法是什么?我知道我可以用一个循环来实现,但是我猜它比<code>rays_all[-1]</code>和<code>rays_append()</code>慢得多?有什么“矢量化”的方法吗?你知道吗</p>