首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Numpy矩阵中找到一个值的索引并将它与另一个值相加

在Numpy矩阵中找到一个值的索引并将它与另一个值相加
EN

Stack Overflow用户
提问于 2021-12-27 19:53:19
回答 2查看 61关注 0票数 1

我希望在矩阵中找到一个值的索引,并将它添加到另一个值中。我该怎么做?我这样做了,但不起作用。谢谢你的帮助。结果应该是0。

代码语言:javascript
复制
import numpy as np

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

index=np.where(a==3)

newnumber=index-2
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-27 20:07:32

你们很亲密。您的解决方案目前并不完全有效,因为np.where正在返回一个包含满足条件的索引的数组的元组。要使它工作,您所需要做的就是用您喜欢的方法(可以是index, = np.where(a==3)index = np.where(a==3)[0]或其他什么)来解压元组。

将来,我建议您在得到意外结果时检查变量。在这种情况下,做print(index)就足够了!

票数 1
EN

Stack Overflow用户

发布于 2021-12-27 20:52:52

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

您的数组和测试:

代码语言:javascript
复制
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

代码语言:javascript
复制
In [49]: a[a==3]
Out[49]: array([3])

并更改该元素的值:

代码语言:javascript
复制
In [50]: a[a==3] -= 2
In [51]: a
Out[51]: array([ 1,  2,  1,  4, 78, 55, 33, 22])

布尔掩码上的where生成一个元组(重新读取np.where/nonzero文档):

代码语言:javascript
复制
In [52]: np.where(Out[48])
Out[52]: (array([2]),)

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

代码语言:javascript
复制
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'

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

代码语言:javascript
复制
In [54]: np.where(Out[48])[0]-2
Out[54]: array([0])

这只是元素2在3之前的索引。这就是你真正想要的吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70499849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档