我想在矩陣中找到一個值的索引并將其添加到另一個值。我該怎么做?我做了如下但不起作用。謝謝你的幫助。結果應該是0。
import numpy as np
a=np.array([1, 2, 3, 4, 78, 55, 33 ,22])
index=np.where(a==3)
newnumber=index-2
uj5u.com熱心網友回復:
你很親近。您現在的解決方案不太有效,因為np.where回傳一個元組,其中包含一個索引滿足條件的陣列。為了使它的作業,所有你需要做的是與你的prefferred方法來解壓元組(可能是index, = np.where(a==3)或index = np.where(a==3)[0]或其他)。
將來,我建議您在獲得意外結果時檢查變數。在這種情況下,這樣做print(index)就足夠了!
uj5u.com熱心網友回復:
你有兩個問題 - 你想要減去的內容不明確,以及結果的元組性質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 個步驟的元素的索引。這真的是你想要的嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/395408.html
