import numpy as np
a=np.zeros(5)
a[0]=22
a[1]=33
a[2]=10
a[3]=12
a[4]=49
var=np.where(a==10)
print(var)
我們正在上面代碼的輸出如下:給出數組元素獲取numpy的陣列的具體指標爲整數
(array([2], dtype=int64),)
但是,我們希望得到指數值僅 (例如,2這裏)整數,而不是整條線。
import numpy as np
a=np.zeros(5)
a[0]=22
a[1]=33
a[2]=10
a[3]=12
a[4]=49
var=np.where(a==10)
print(var)
我們正在上面代碼的輸出如下:給出數組元素獲取numpy的陣列的具體指標爲整數
(array([2], dtype=int64),)
但是,我們希望得到指數值僅 (例如,2這裏)整數,而不是整條線。
嗯,這很簡單:
index = var[0][0]
謝謝。有用 ! – user3701435
對不起,它不適用於大小爲15000的大型陣列。錯誤我得到: FutureWarning:elementwise comparison failed;返回標量,但將來會執行元素比較 var = np.where(Keys == 10) – user3701435
這是一個不同的錯誤。 – Sven
如果使用np.where
,我想獲得該指數將是np.where(a==10)[0][0]
的唯一途徑。
對不起,它不適用於大小爲15000的大型陣列。錯誤我得到: FutureWarning:元素比較失敗;返回標量,但將來會執行基於元素的比較 var = np.where(Keys == 10) – user3701435
>>> var [0][0]
2
但是如果查找項目具有重複條目,var [0]可能是一個列表。
numpy.where(condition)的結果是ndarray或ndarray的元組。 你的結果也是一個元組。打印結果的更好的做法是將結果元組轉換爲單維數組,然後打印該數組的每個值。
import numpy as np
a = np.array([22,33,10,12,49]) #array created with values
var = np.where(a==10) #condition to check, resulting in tuple with location of matching values
var = np.asarray(var).ravel() #asarray(var) converts var in array and ravel() converts that into singular array.
for v in var:
print(v)
對不起,它不適用於大型數組大小爲15000.我得到的錯誤: FutureWarning:elementwise comparison失敗;取而代之的是返回標量,但將來會執行元素比較 var = np.where(Keys == 10) – user3701435
好的,所以你需要了解返回的對象是什麼。玩它,做var [0],看看出了什麼,然後繼續玩索引。 – elelias
對不起,它不適用於大小爲15000的大型陣列。錯誤我得到: FutureWarning:元素比較失敗;而不是返回標量,但將來會執行元素比較 var = np.where(Keys == 10) – user3701435