2

所以我试图检测数组中的值是否在某个范围内,然后返回一个二进制逻辑数组,即一个表示真,零表示假。我有这个,但 iPython 一直在抱怨

D = ( 1 < X[0,:] + X[1,:]) < 2 ).astype(int)

有趣的是,只需检查一种方式就可以了

D = ( X[0,:] + X[1,:]) < 2 ).astype(int)

我觉得有点令人困惑。

4

5 回答 5

2
Y=X[0,:]+X[1,:]
D = ((1<Y) & (Y<2)).astype(int)
于 2010-11-12T13:45:58.413 回答
1
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] 。那是你想要的吗?

于 2010-11-12T13:11:51.997 回答
1

unutbu 更短,这更明确

>>> import numpy
>>> numpy.logical_and(1 < np.arange(5), np.arange(5)< 4).astype(int)
array([0, 0, 1, 1, 0])
于 2010-11-12T15:08:55.533 回答
0

这?

 bits = [ bool(low <= value < high) for value in some_list ]
于 2010-11-12T13:17:49.173 回答
0

尝试使用all(编辑为 return int):

D = numpy.all([1 < x, x < 2], axis=0).astype(int)
于 2010-11-12T13:43:36.800 回答