回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试着从numpy数组中获取索引值,我试着使用intersects而不是无效的。我只是想在两个数组中找到相似的值。一个是2D,我选择了一个列,另一个是1D,只是一个要搜索的值列表,所以实际上只有2个1D数组。</p>
<p>我们将此数组称为:</p>
<pre><code> array([[ 1, 97553, 1],
[ 1, 97587, 1],
[ 1, 97612, 1],
[ 1, 97697, 1],
[ 1, 97826, 3],
[ 1, 97832, 1],
[ 1, 97839, 1],
[ 1, 97887, 1],
[ 1, 97944, 1],
[ 1, 97955, 2]])
</code></pre>
<p>我们搜索说,<code>values = numpy.array([97612, 97633, 97697, 97999, 97943, 97944])</code></p>
<p>所以我试着:</p>
<pre><code>numpy.where(a[:, 1] == values)
</code></pre>
<p>我希望有一堆值的索引,但是我得到的是一个空数组,它会弹出<code>[(array([], dtype=int64),)]</code>。</p>
<p>如果我试试这个:</p>
<pre><code>numpy.where(a[:, 1] == 97697)
</code></pre>
<p>它还给了我<code>(array([2]),)</code>,这是我所期望的。</p>
<p>我这里少了什么奇怪的数组?或者有更简单的方法来做这个吗?查找数组索引和匹配数组似乎根本没有我所期望的那样工作。当我想通过indice或unique值找到数组的并集或交集时,它似乎不起作用。任何帮助都是很好的。谢谢。</p>
<p><strong>编辑:</strong>
根据沃伦的要求:</p>
<pre><code>import numpy
a = numpy.array([[ 1, 97553, 1],
[ 1, 97587, 1],
[ 1, 97612, 1],
[ 1, 97697, 1],
[ 1, 97826, 3],
[ 1, 97832, 1],
[ 1, 97839, 1],
[ 1, 97887, 1],
[ 1, 97944, 1],
[ 1, 97955, 2]])
values = numpy.array([97612, 97633, 97697, 97999, 97943, 97944])
</code></pre>
<p>我发现<code>numpy.in1d</code>将为操作提供一个正确的布尔值真值表,其1d数组的长度应与原始数据相同。我现在唯一的问题是如何处理这个问题,例如删除或修改这些索引处的原始数组。我可以用一个循环费力地完成它,但据我所知,在numpy有更好的方法。作为面具的真相表应该是非常强大的,从我所能找到的努比。</p>