擅长:python、mysql、java
<p>问题是您正在使用掩码分配什么。不知道g1、g2、g3和g4内部是什么,很难理解您正在做什么,但可能</p>
<pre><code>tau*(g1+g2-g3+g4)
</code></pre>
<p>是一个二维向量。相反,您需要指定一个值。例如,如果您以这种方式更改作业,它可能会起作用:</p>
<pre><code>g1_coll[obstacle==0]=(tau*(g1+g2-g3+g4))[0]
g2_coll[obstacle==0]=(tau*(g1+g2+g3-g4))[0]
g3_coll[obstacle==0]=(tau*(-g1+g2+g3+g4))[0]
g4_coll[obstacle==0]=(tau*(g1-g2+g3+g4))[0]
</code></pre>
<p>或者,如果它不起作用:</p>
<pre><code>g1_coll[obstacle==0]=(tau*(g1+g2-g3+g4))[0][0]
g2_coll[obstacle==0]=(tau*(g1+g2+g3-g4))[0][0]
g3_coll[obstacle==0]=(tau*(-g1+g2+g3+g4))[0][0]
g4_coll[obstacle==0]=(tau*(g1-g2+g3+g4))[0][0]
</code></pre>
<p>但是在做任何事情之前,你应该了解你输入的内容(<code>tau*(g1+g2-g3+g4)</code>)</p>
<p><strong>我猜g1、g2、g3和g4可能是二维向量</strong></p>
<p>通过这个例子,我可以重现您的错误:</p>
<pre><code>import numpy as np
import random
my_matrix = np.random.rand(4)
print(my_matrix)
my_boolean_array = my_matrix < 0.5
print(my_boolean_array)
my_matrix[my_boolean_array] = [[0, 0]] # two dimensions array! not a single value. This will not work
print(my_matrix)
</code></pre>
<p>试着打印里面的值</p>
<pre><code>print(tau*(g1+g2-g3+g4))
</code></pre>