在 Numpy 矩阵中查找一个值的索引并将其与另一个值相加

Finding index of a value in Numpy matrix and add it with another value

我想在矩阵中找到一个值的索引并将其添加到另一个值。我该怎么做?我做了如下但不起作用。 谢谢你的帮助。结果应为 0。

import numpy as np

a=np.array([1, 2, 3, 4, 78, 55, 33 ,22])

index=np.where(a==3)

newnumber=index-2

你们很亲近。您现在的解决方案不太有效,因为 np.where 正在返回一个元组,其中包含一个索引满足条件的数组。为了让它工作,你需要做的就是用你喜欢的方法解压元组(可以是 index, = np.where(a==3)index = np.where(a==3)[0] 或其他)。

以后,我建议您在获得意外结果时检查您的变量。在这种情况下,print(index) 就够了!

您有两个问题 - 您想要减去的内容不明确,以及 where 结果的元组性质。

你的数组和测试:

In [47]: a=np.array([1, 2, 3, 4, 78, 55, 33 ,22])
In [48]: a==3
Out[48]: array([False, False,  True, False, False, False, False, False])

那个布尔掩码可以直接用来索引a:

In [49]: a[a==3]
Out[49]: array([3])

并更改该元素的值:

In [50]: a[a==3] -= 2
In [51]: a
Out[51]: array([ 1,  2,  1,  4, 78, 55, 33, 22])
布尔掩码上的

where 生成一个元组(重读 np.where/nonzero 文档):

In [52]: np.where(Out[48])
Out[52]: (array([2]),)

我们不能从这个元组中减去一个值:

In [53]: np.where(Out[48])-2
Traceback (most recent call last):
  File "<ipython-input-53-fd4087ff32d9>", line 1, in <module>
    np.where(Out[48])-2
TypeError: unsupported operand type(s) for -: 'tuple' and 'int'

我们可以从元组中提取数组,并从中减去一个值:

In [54]: np.where(Out[48])[0]-2
Out[54]: array([0])

那只是 3 之前 2 步的元素的索引。那是你真正想要的吗?