如何在Python中检测数组中的值是否在特定范围内并返回二进制数组?

发布于 2024-10-01 18:59:56 字数 277 浏览 9 评论 0原文

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

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

有趣的是,只检查一种方法完全没问题

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

,我觉得有点令人困惑。

So I am trying to detect if the values in an array is in a certain range and then return a binary logical array i.e. one for true and zero for false. I have this but iPython keeps complaining

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

the interesting thing is that just checking one way works totally ok

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

which I find a bit perplexing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

素罗衫 2024-10-08 18:59:57
Y=X[0,:]+X[1,:]
D = ((1<Y) & (Y<2)).astype(int)
Y=X[0,:]+X[1,:]
D = ((1<Y) & (Y<2)).astype(int)
水水月牙 2024-10-08 18:59:57
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]。这就是你想要的吗?

array = (1, 2, 3, 4, 5)
bit_array = map(lambda x: 1 < x < 5 and 1 or 0, array)

bit_array is [0, 1, 1, 1, 0] after that. Is that what you wanted?

国粹 2024-10-08 18:59:57

unutbu 更短,这更明确

>>> import numpy
>>> numpy.logical_and(1 < np.arange(5), np.arange(5)< 4).astype(int)
array([0, 0, 1, 1, 0])

unutbu's is shorter, this is more explicit

>>> import numpy
>>> numpy.logical_and(1 < np.arange(5), np.arange(5)< 4).astype(int)
array([0, 0, 1, 1, 0])
金橙橙 2024-10-08 18:59:57

这?

 bits = [ bool(low <= value < high) for value in some_list ]

This?

 bits = [ bool(low <= value < high) for value in some_list ]
甜心 2024-10-08 18:59:57

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

D = numpy.all([1 < x, x < 2], axis=0).astype(int)

Try using all (edited to return int):

D = numpy.all([1 < x, x < 2], axis=0).astype(int)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文