回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个函数<code>A</code>,它的输入是numpy向量(numpy.ndarray公司)称为<code>x</code>。此函数为<code>x</code>的每个元素计算该元素本身与<code>x</code>的其他元素的总和,这些元素由这些元素的列表给出。你知道吗</p>
<p>下面的例子应该更好地说明这一点:</p>
<pre><code>x = [[2,3], [3,4], [1,2], [1,3], [1,4]] # my input
n = [[1,2,3], [0,4,2], [3,0,1], [0,1,4], [3,1,2]] # list with lists of element to be added for each element in x
</code></pre>
<p>对于x的第一个元素,x[0]=[2,3],我必须加上n[0]给出的值,所以它们是1,2和3。我通过<code>x[n[0][0]],x[n[0][1]] and x[n[0][2]]</code>获得它们。你知道吗</p>
<p>示例的预期输出应为:</p>
<pre><code>l = [[11, 18], [13, 21], [9, 16], [9, 20], [8, 21]]
</code></pre>
<p>元素x[i]的最终和应该是</p>
<pre><code>(x[i] + x[n[i][0]] + x[i] + x[n[i][1]] + x[i] + x[n[i][2]])
</code></pre>
<p>函数的返回是每个计算和的列表。你知道吗</p>
<p>由于这是迭代的,所以我遍历了列表x和n。下面的代码实现了这一点,但是在列表x和n中逐个元素地执行</p>
<pre><code>def A(x):
a = []
for i, x_i in enumerate(x):
mysum = np.zeros(2)
for j, n_j in enumerate(n[i]):
mysum = mysum + x_i + x[n_j]
a.append(mysum)
return np.array(a)
</code></pre>
<p>我想使这个代码更矢量化,但这是我几天前以来最好的。你知道吗</p>
<p>编辑:如果有用的话,我总是对每个元素加3个值,所以<code>n</code>的子列表总是长度为3。你知道吗</p>