我在想是否有比 np.less 功能更快的方法。Atm 我將兩個陣列與 np.less 進行比較,得到類似 [true, true, false] 的東西,然后我用 a=np.where(x == True) 檢查以獲得 true 的位置。之后我通過串列檢查值 [a] 的位置。在我看來,必須有一種更快的方法,但我目前找不到。對陣列進行排序是沒有選擇的。
代碼如下所示:
a = np.array([1, 2, 3])
b = np.array([2, 1, 8])
over = np.less(a, b)
# over = [True, False, True]
pos = np.where(over == True)[0]
# pos = [0, 2]
x = b[pos]
# x = [2,8]
uj5u.com熱心網友回復:
正如Ali_Sh 指出的那樣,只需使用條件來獲取值。
import numpy as np
a = np.array([1, 2, 3])
b = np.array([2, 1, 8])
b[np.less(a, b)]
# array([2, 8])
list(b[np.less(a, b)]) # for a list result instead of np arr
# [2, 8]
# or just
b[a < b]
# array([2, 8])
問題不在于速度,np.less而在于您獲得的額外步驟。所有這些都快接近 C 速度;只需要洗掉不必要的步驟。
即使您想將 True/False 結果保存在over:
over = np.less(a, b)
b[over]
# array([2, 8])
over = a < b
b[over]
# array([2, 8])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/463185.html
上一篇:計算具有特定元素的陣列的平均值
