我希望在矩阵中找到一个值的索引,并将它添加到另一个值中。我该怎么做?我这样做了,但不起作用。谢谢你的帮助。结果应该是0。
import numpy as np
a=np.array([1, 2, 3, 4, 78, 55, 33 ,22])
index=np.where(a==3)
newnumber=index-2发布于 2021-12-27 20:07:32
你们很亲密。您的解决方案目前并不完全有效,因为np.where正在返回一个包含满足条件的索引的数组的元组。要使它工作,您所需要做的就是用您喜欢的方法(可以是index, = np.where(a==3)或index = np.where(a==3)[0]或其他什么)来解压元组。
将来,我建议您在得到意外结果时检查变量。在这种情况下,做print(index)就足够了!
发布于 2021-12-27 20:52:52
您有两个问题--对要减去的内容不明确,以及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])这只是元素2在3之前的索引。这就是你真正想要的吗?
https://stackoverflow.com/questions/70499849
复制相似问题