我有一個某些維度的 numpy 陣列,我想使用布爾陣列制作這個陣列的切片。例如,給定我的名為“verts”的陣列,我想根據某些條件將此陣列的一個切片放入另一個名為“upper”的陣列中。我可以執行以下操作:
cond_upper = verts[:,2]<L/2
upper = verts[cond_upper]
如何修改上面的代碼片段以滿足雙重條件,如下所示:
cond_upper = verts[:,2]<L/2 and verts[:,2]<40.0
upper = verts[cond_upper]
這并沒有給我想要的結果,因為 python 希望我按元素比較它們,但這不是我想要做的。我該如何解決這個問題?
我添加一個例子來使事情更清楚:
verts = np.array([[1,2,3],
[4,5,6],
[7,8,9],])
cond = verts[:,2]>3 and verts[:,2]<7
upper = verts[cond]
預期結果:
upper = [[1,2,3],
[4,5,6],]
我希望這使它更清楚一些
uj5u.com熱心網友回復:
嘗試:
>>> [row for row in verts if row[2] >= 3 and row[2] < 7]
[[1, 2, 3], [4, 5, 6]]
uj5u.com熱心網友回復:
您應該使用按位運算子&進行元素比較,而不是and.
import numpy as np
verts = np.array([[1,2,3],
[4,5,6],
[7,8,9],])
cond = (verts[:,2]>=3) & (verts[:,2]<7)
upper = verts[cond]
輸出:
array([[4, 5, 6]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/322020.html
