擅长:python、mysql、java
<p>似乎转换成一个列表然后再返回是没有效率的。相反,为什么不找出要索引哪个数组(以及在哪里),然后只更新该索引呢?e、 g</p>
<pre><code>def change_element(arr1, arr2, ix, value):
which = ix >= arr1.size
arr = [arr1, arr2][which]
ix = ix - arr1.size if which else ix
arr.ravel()[ix] = value
</code></pre>
<p>下面是一些用法示例:</p>
^{pr2}$
<p>一些注意事项这会更新阵列。它不会创建新的数组。如果您真的需要创建新数组,我想您可以<code>np.copy</code>它们并返回。另外,这依赖于在<code>ravel</code>前后共享内存的数组。我不记得<code>ravel</code>将返回新数组而不是原始数组中的视图的确切情况。在</p>
<hr/>
<p>推广到更多的数组实际上是相当容易的。我们只需要遍历数组列表,看看<code>ix</code>是否小于数组大小。如果是的话,我们已经找到了我们的阵列。如果不是,我们需要从<code>ix</code>中减去数组的大小,以表示到目前为止我们已经遍历的元素数:</p>
<pre><code>def change_element(arrays, ix, value):
for arr in arrays:
if ix < arr.size:
arr.ravel()[ix] = value
return
ix -= arr.size
</code></pre>
<p>你可以称之为类似于之前的:</p>
<pre><code>change_element([arr1, arr2], 6, 3.14159)
</code></pre>