我有一個整數陣列
mypos = np.array([10, 20, 30, 40, 50])
以及開始和結束位置的串列,如下所示:
mydelims = [[5, 12],
[15,31],
[12,16],
[22,69]]
我想遍歷mydelims并計算每對中有多少位置。本能地,我會這樣寫:
for mypair in mydelims:
print(sum(mypos>mypair[0] & mypos<mypair[1]))
但是,python 似乎無法處理這個問題。我知道mypos>42會回傳一組布林值,但是將多重比較應用于一個整數陣列的最有效方法是什么?
uj5u.com熱心網友回復:
你非常接近并且正在尋找np.logical_and:
import numpy as np
mypos = np.array([10, 20, 30, 40, 50])
mydelims = [[5, 12],
[15, 31],
[12, 16],
[22, 69]]
result = {
tuple(mypair): sum(np.logical_and(mypos > mypair[0], mypos < mypair[1]))
for mypair in mydelims
}
print(result)
輸出:
{(5, 12): 1, (15, 31): 2, (12, 16): 0, (22, 69): 3}
請注意,您將 delims 視為非包容性 - 我認為這是故意的。即既不5也不12屬于[5, 12]。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/535330.html
標籤:Python数组
上一篇:在React中渲染陣列
