回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想从以下公式中获得一个列表(或数组,无所谓):</p>
<pre><code>A_i = X_(k!=i) * S_(k!=i) * X'_(k!=i)
</code></pre>
<p>其中:</p>
<p>X是向量(X'是X的转置),S是矩阵,下标k被定义为{k=1,2,3,…n | k=i} 是的</p>
<pre><code>X = [x1, x2, ..., xn]
S = [[s11,s12,...,s1n],
[s21,s22,...,s2n]
[... ... ... ..]
[sn1,sn2,...,snn]]
</code></pre>
<p>我以以下为例:</p>
<pre><code>X = [0.1,0.2,0.3,0.5]
S = [[0.4,0.1,0.3,0.5],
[2,1.5,2.4,0.6]
[0.4,0.1,0.3,0.5]
[2,1.5,2.4,0.6]]
</code></pre>
<p>所以,最终,我会得到a的四个值的列表</p>
<p>我做到了:</p>
<pre><code>import numpy as np
x = np.array([0.1,0.2,0.3,0.5])
s = np.matrix([[0.4,0.1,0.3,0.5],[1,2,1.5,2.4,0.6],[0.4,0.1,0.3,0.5],[1,2,1.5,2.4,0.6]])
for k in range(x) if k!=i
A = (x.dot(s)).dot(np.transpose(x))
print (A)
</code></pre>
<p>我对如何使用条件“for”循环感到困惑。你能帮我解决这个问题吗?谢谢</p>
<p>编辑:
只是为了解释更多。如果取i=1,则公式为:</p>
<pre><code> A_1 = X_(k!=1) * S_(k!=1) * X'_(k!=1)
</code></pre>
<p>因此,与下标1关联的任何数组(或值)都将在X和S中删除。比如:</p>
<pre><code>X = [0.2,0.3,0.5]
S = [[1.5,2.4,0.6]
[0.1,0.3,0.5]
[1.5,2.4,0.6]]
</code></pre>