<p>看看<code>arr>3</code>:</p>
<pre><code>In [71]: arr>3
Out[71]:
array([[[[False, True],
[False, True],
[False, True]],
[[ True, True],
[ True, True],
[ True, True]]],
[[[ True, True],
[ True, True],
[ True, True]],
[[False, True],
[False, True],
[False, True]]]], dtype=bool)
</code></pre>
<p><code>arr[arr>3]</code>选择掩码为<code>True</code>的元素。你希望这个选择有什么样的结构或形状?公寓是唯一有意义的东西,不是吗?<code>arr</code>本身没有改变。</p>
<p>你可以把不符合面具的条件归零</p>
<pre><code>In [84]: arr1=arr.copy()
In [85]: arr1[arr<=3]=0
In [86]: arr1
Out[86]:
array([[[[ 0, 11],
[ 0, 22],
[ 0, 33]],
[[ 4, 44],
[ 5, 55],
[ 6, 66]]],
[[[ 7, 77],
[ 8, 88],
[ 9, 99]],
[[ 0, 32],
[ 0, 33],
[ 0, 34]]]])
</code></pre>
<p>现在你可以在不同的维度上做加权和或平均。</p>
<p><code>np.nonzero</code>(或<code>np.where</code>)也可能有用,为您提供所选术语的索引:</p>
<pre><code>In [88]: np.nonzero(arr>3)
Out[88]:
(array([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]),
array([0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1]),
array([0, 1, 2, 0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 0, 1, 2]),
array([1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1]))
</code></pre>