我需要將陣列的索引從第一個條件為真到第二個條件為真切分,這些條件永遠不會同時為真,但在另一個條件發生之前,一個條件可能多次為真。
我試圖解釋:
array_filter = np.array([3,4,5,6,4,3,2,3,4,5])
array1 = np.array([2,3,4,6,3,3,1,2,3,4])
array2 = np.array([3,5,6,7,5,4,3,3,5,6])
array1_cond = array1 >= array_filter
array2_cond = array2 <= array_filter
0 1 2 3 4 5 6 7 8 9
array_filter 3 4 5 6 4 3 2 3 4 5
array1 2 3 4 6 3 3 1 2 3 4
array1_cond ^ ^ (^ = True)
array2 3 5 6 7 5 4 3 3 5 6
array2_cond ^ ^
expected_output 2 3 4 | 7 5 4 3 | 2 3 4
array1 | array2 | array1
預期輸出:
expected_output[(array2_cond) : (array1_cond)] = array1[(array2_cond) : (array1_cond)]
expected_output[(array1_cond) : (array2_cond)] = array2[(array1_cond) : (array2_cond)]
expected_output = [ 2, 3, 4, 7, 5, 4, 3, 2, 3, 4 ]
如果語法有點混亂,我很抱歉,但是我知道如何使它更好...... <3
我該如何執行這個?
沒有回圈可以嗎?
uj5u.com熱心網友回復:
這適用于您的示例,使用a,b代替array1, array2:
nz = np.flatnonzero(a_cond | b_cond)
lengths = np.diff(nz, append=len(a))
cond = np.repeat(b_cond[nz], lengths)
result = np.where(cond, a, b)
如果在陣列的開頭,兩個條件都不成立,b則選擇來自的元素。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/516072.html
下一篇:在拋硬幣模擬中實作偏差
