所以我試圖檢測一個數組中的值是否在一定範圍內,然後返回一個二進制邏輯數組,即一個爲true,零爲false。我有這個,但是IPython的不斷抱怨如何檢測數組中的值是否在一定範圍內並在Python中返回二進制數組?
D = (1 < X[0,:] + X[1,:]) < 2).astype(int)
有趣的事情是,僅僅一個檢驗工作方式完全確定
D = (X[0,:] + X[1,:]) < 2).astype(int)
我覺得這有點令人費解。
所以我試圖檢測一個數組中的值是否在一定範圍內,然後返回一個二進制邏輯數組,即一個爲true,零爲false。我有這個,但是IPython的不斷抱怨如何檢測數組中的值是否在一定範圍內並在Python中返回二進制數組?
D = (1 < X[0,:] + X[1,:]) < 2).astype(int)
有趣的事情是,僅僅一個檢驗工作方式完全確定
D = (X[0,:] + X[1,:]) < 2).astype(int)
我覺得這有點令人費解。
Y=X[0,:]+X[1,:]
D = ((1<Y) & (Y<2)).astype(int)
array = (1, 2, 3, 4, 5)
bit_array = map(lambda x: 1 < x < 5 and 1 or 0, array)
bit_array之後是[0,1,1,1,0]。那是你想要的嗎?
用列表理解替換地圖... b = [1
是的!有趣的思維方式,一點在Python的新手,所以我仍然在努力的一些概念或做事的方式。這似乎相當強大,但。 – 2010-11-13 13:02:29
我很喜歡這個概念!我想這會改變我的整個思維方式。 – 2010-11-13 13:15:56
This?
bits = [ bool(low <= value < high) for value in some_list ]
嘗試使用all
(編輯返回int
):
D = numpy.all([1 < x, x < 2], axis=0).astype(int)
unutbu的時間較短,這是比較明確的
>>> import numpy
>>> numpy.logical_and(1 < np.arange(5), np.arange(5)< 4).astype(int)
array([0, 0, 1, 1, 0])
「我覺得有點令人費解」。這是令人困惑的代碼。你能解釋爲什麼你認爲這是明智的代碼?你認爲這會做什麼? – 2010-11-12 13:16:01
@ S.Lott看起來像X是一個numpy陣列 – 2010-11-12 13:19:30
@ S.Lott你完全正確。我認爲Python會奇蹟般地理解我想要找到一到兩個之間的所有值。我不知道我在想什麼。很顯然,在工作太多後我很渾渾噩噩...... – 2010-11-13 12:44:32