为了账号安全,请及时绑定邮箱和手机立即绑定

如何将浮点数与其组成部分是 Python 中的间隔的数组进行比较?

如何将浮点数与其组成部分是 Python 中的间隔的数组进行比较?

白猪掌柜的 2021-07-09 14:01:26
我想将数组:[2, 4, 6, 9] 与间隔矩阵 (m*n) 进行比较:[[0,1], [0,1], [0,1], [0,1] [1,2], [1,2], [1,2], [1,2]   .      .      .      .   .      .      .      .    .      .      .      . ]如果数字不在该区间内,则结果将是一个矩阵 (m*n),其中 0 或在其他情况下为 1。
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

一种方法是使用嵌套列表理解


data = [[0, 1], [0, 1], [1, 2], [1, 5], [5, 10], [11, 20]]

check = [2, 4, 6, 9]


result = [any(1 if l <= y <= r else 0 for y in check) for l, r in data]

# [False, False, True, True, True, False]

如果您想要 0 或 1,您可以使用以下


result = [max(1 if l <= y <= r else 0 for y in check) for l, r in data]

# [0, 0, 1, 1, 1, 0]


查看完整回答
反对 回复 2021-07-21
?
慕后森

TA贡献1802条经验 获得超5个赞

由于您的范围是隐式排序的,您可以简单地检查您的数字是否在开始元素和停止元素之间:


for each element, e, in your input vector:

    for each range pair (low, high) in your interval matrix:

        if low <= e <= high; then

          true

        else 

          false

在 Python 中:


def check_within_range(arr, mat):

    return [[low <= e <= high for e in arr] for (low, high) in mat]


查看完整回答
反对 回复 2021-07-21
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

这应该返回一个布尔值矩阵(可以很容易地将其视为 1 和 0)。希望这是您想要实现的目标。


# m is the matrix

# a is the array

result = [[y in range(x[0], x[-1]) for y in a] for x in m]


查看完整回答
反对 回复 2021-07-21
  • 3 回答
  • 0 关注
  • 222 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信