1
我有兩個數組x=[1,2,3,4]
和y=[1,0,0,1]
,描述了2D點(x,y)。我想知道有多少元素有x>2
和y==1
。什麼是最簡單的方法來做到這一點(沒有任何循環)? 是否有可能做類似x[x>2]
,但有兩種情況?2D空間中的Python過濾器點
我有兩個數組x=[1,2,3,4]
和y=[1,0,0,1]
,描述了2D點(x,y)。我想知道有多少元素有x>2
和y==1
。什麼是最簡單的方法來做到這一點(沒有任何循環)? 是否有可能做類似x[x>2]
,但有兩種情況?2D空間中的Python過濾器點
假設這些都是numpy的陣列,因爲你x[x>2]
是numpy的語法,你只需要和(&
)操作:
meet_cond = (x > 2) & (y == 1)
how_many = meet_cond.sum()
which_x = x[meet_cond]
which_y = y[meet_cond]
如果x
和y
屬於一起爲點,你可能要將其裝入a np
2D陣列:
>>> import numpy as np
>>> x = np.array([1, 2, 3, 4])
>>> y = np.array([1, 0, 0, 1])
>>> xy = np.array([x, y]).T
>>> xy[(x > 2) & (y == 1)]
array([[4, 1]])
>>> xy[(xy[:, 0] > 2) & (xy[:, 1] == 1)]
array([[4, 1]])
>>> np.count_nonzero((xy[:, 0] > 2) & (xy[:, 1] == 1))
1
非常酷。顯示'meet_cond'的外觀可能很有趣。 –