我正在處理時間序列資料。假設我有兩個形狀相同的串列,我需要找到兩個串列在同一位置的數字都大于零的實體。
把它分解
A = [1,0,2,0,4,6,0,5]
B = [0,0,5,6,7,5,0,2]
我們可以看到,在四個位置,兩個串列的數字都大于 0。還有其他實體,但我確信如果我能得到一個簡單的代碼,它所需要的只是調整符號,我也可以在更大的范圍內使用。
我努力了
len([1 for i in A if i > 0 and 1 for i in B if i > 0 ])
但我認為它給我的答案是這兩種情況的產物。
uj5u.com熱心網友回復:
既然你有一個麻木的標簽:
A = np.array([1,0,2,0,4,6,0,5])
B = np.array([0,0,5,6,7,5,0,2])
mask = ((A>0)&(B>0))
# array([False, False, True, False, True, True, False, True])
mask.sum()
# 4
A[mask]
# array([2, 4, 6, 5])
B[mask]
# array([5, 7, 5, 2])
在純 python 中(可以推廣到任意數量的串列):
A = [1,0,2,0,4,6,0,5]
B = [0,0,5,6,7,5,0,2]
mask = [all(e>0 for e in x) for x in zip(A, B)]
# [False, False, True, False, True, True, False, True]
uj5u.com熱心網友回復:
如果你想使用 vanilla python,這應該是你正在尋找的
l = 0
for i in range(len(A)):
if A[i] > 0 and B[i] > 0:
l = l 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/490391.html
下一篇:rgb到灰度轉換器
