问题标签 [bisect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
791 浏览

python - 根据边际税率表计算纳税义务

所得税计算 python询问如何在给定边际税率表的情况下计算税款,其答案提供了一个有效的函数(如下)。

但是,它仅适用于单一的收入价值。我将如何调整它以适用于列表/numpy 数组/pandas 系列收入值?也就是说,我如何向量化这段代码?

0 投票
1 回答
96 浏览

python - 使用 Bisect 模块的线性列表插入算法中忽略的 Try-Except 子句(Python)

我正在尝试使用Python 3.7 中模块的input()withbisect()insort()函数将元素插入到线性列表中。bisect为了只接受整数输入,我尝试添加一个 try-except 子句(如答案中所建议的:Making a variable integer input only == an integer in Python):

我希望 Python 在输入浮点数时捕获异常,但它忽略了 try-except 子句并显示了这个:

ind=bisect.bisect(m, item) TypeError: '<' 在 'str' 和 'int' 的实例之间不支持

可能的问题是什么?

编辑:

在更改except ValueErrorexcept TypeError输入“5.0”时,我收到了 ValueError:

item=int(item) ValueError: int() 以 10 为底的无效文字:'5.0'

0 投票
1 回答
24 浏览

python-3.x - python3平分序列关联

我正在努力理解 Python 如何在断点序列和等级序列之间建立关联。

结果 = ['F', 'F', 'A', 'C', 'C', 'B', 'A', 'A']

python如何知道低于60的分数== F,60-70之间的分数是D,70-80是C等?

0 投票
1 回答
157 浏览

python - 使用 simpy.optimize.bisect 查找函数的零点,具有复杂函数

我是一名机械工程专业的学生,​​这是我第一次接触 Python 环境,或者 Anaconda 的发行版。我的任务是找到这个函数的零点:

⋅sin()cos()+⋅cos()sin()2−⋅cos()−ℎ⋅sin()=0

使用参数:

是函数上等距点的数量,函数限于:

∈[0,2] 其中是一个 np.array。

绘制函数 问题是,当我尝试将函数插入时bisect(fun, a, b),错误提示

“numpy.ndarray”对象不可调用

有人可以帮助一个菜鸟程序员吗?谢谢。

0 投票
1 回答
1768 浏览

python - Absolute Elements Sums

I was trying to solve this problem on Hackerrank. https://www.hackerrank.com/challenges/playing-with-numbers/problem

Given an array of integers, you must answer a number of queries. Each query consists of a single integer, x, and is performed as follows:

  • Add x to each element of the array, permanently modifying it for any future queries.
  • Find the absolute value of each element in the array and print the sum of the absolute values on a new line.

Can someone explain this solution to me?
I didn't quite understand the need to search for -q in the array n = bisect_left(arr, -q) and this line (Sc[-1] - 2 * Sc[n] + q * (N - 2 * n).

Thank you

0 投票
1 回答
129 浏览

python - bisect_right() 怎么会比 insort_right() 慢 4 倍?

我正在尝试优化在竞争性编程网站上超时的解决方案。我开始使用 cProfile,它似乎显示bisect_right()需要 4 倍于insort_right(). 这是在输入列表上运行的分析,包含超过 40k 个条目:

我认为所有列表插入都是 O(n),因为平均必须移动 n/2 个元素。简单地确定插入排序列表的位置将是 O(log n)。但在配置文件报告中,它看起来颠倒了:插入器insort_right()比位置确定器慢bisect_right()。我哪里错了?这是代码:

谢谢你的关注。

0 投票
1 回答
1143 浏览

python - blender 2.8 python,使用 bisect 将对象分成两半会产生错误的结果

使用 Blender 2.8,我创建了一个复杂的对象,我想将其拆分为两个单独的对象。

我遵循的过程(所有脚本):创建对象;重复对象;进入编辑模式并用 '''clear_inner=True''' 平分。(完美!)然后选择其他(原始)对象;进入编辑模式并用 '''clear_outer=True''' 平分。现在第一个对象似乎也受到了二等分:只有一些点/面被二等分保留。

我包括一个简单多维数据集的代码:

使用 bisect 将立方体分成两半

在图片中,您看到第二个二等分的结果成功地将第一个立方体(“左”)减半。但它也分裂了已经被减半的复制立方体('right'),导致只在平分平面上产生一个面。

为什么它不起作用?我究竟做错了什么?

0 投票
0 回答
18 浏览

python - 如何使用 Bisect 对值进行分类?

我有不同的高度(z),我想将它们分类为不同的层。在网上看,似乎 bisect_left 函数是查找值应该出现在列表中的什么位置的好方法。我已将每一层的名称定义为列表中给定 z 值的位置。例如,z=15.75 对应于第 1 层。我编写了下面的函数来实现这一点。

包含一个 if 语句,因为我的 z 值通常是层列表中包含的值。但是,当我运行该线路时

我希望得到 0,但我得到 7。我已经阅读了 bisect 函数的文档,但不明白为什么会出现这种情况。有人可以帮忙吗?

附言。我相信这可能是因为层列表是按降序排列的,对于我的代码的其他部分来说,这种情况很重要,所以理想情况下,任何解决方案都会保持列表不变。

0 投票
1 回答
104 浏览

python - 向量化熊猫数据框中列的逐步函数

我有一个稍微复杂的函数,它通过预定义的逐步逻辑(取决于固定边界以及基于实际值的相对边界)为给定数据分配质量级别。下面的函数 'get_quality()' 对每一行执行此操作,并且使用 pandas DataFrame.apply 对于大型数据集来说非常慢。所以我想把这个计算向量化。显然,我可以为内部 if-logic 做类似的事情df.groupby(pd.cut(df.ground_truth, [-np.inf, 10.0, 20.0, 50.0, np.inf])),然后在每个组内应用类似的子分组(基于每个组的边界),但是对于取决于给定实数/每行中的ground_truth值?

使用df['quality'] = np.vectorize(get_quality)(df['measured'], df['ground_truth'])速度已经快了很多,但是是否有一种真正的矢量化方法来计算相同的“质量”列?

0 投票
1 回答
108 浏览

python - 在 Python 中对冻结集进行二分搜索的替代方法


我需要对frozenset 执行二进制搜索,但由于索引在frozenset 上不起作用,我无法使用该bisect库。我想将 freezeset 转换为列表以使事情变得简单,但问题是转换 ( list(frozenset)) 打乱了顺序,然后我无法执行二进制搜索。你建议什么解决方案?
为了更清楚,让我解释一下我到底在做什么:在 NLP 任务中,我需要从文本中删除停用词,所以我从 scikit-learn 导入了停用词(它比 NLTK 拥有更好的停用词集合在我看来):
from sklearn.feature_extraction.text import ENGLISH_STOP_WORDS
它返回一个frozenset,其中停用词按字母顺序排列。现在我想从我的文本中删除停用词,最好使用二进制搜索检查标记是否在停用词中(显然因为我有按字母顺序排列的停用词并且执行二进制搜索很有效)。所以如下:

这就是我卡住的地方!我期望使用上面的代码在停用词列表中找到所需的索引,然后将我的词与列表中它之前和之后的词进行比较。但我得到这个错误: TypeError: 'frozenset' object does not support indexing

仅供参考,我没有尝试过其他库停用词列表(spaCy、gensim 等),所以我不知道它们在这种情况下是否能更好地工作。但这里的重点是学习处理冻结集上的二进制搜索。提前致谢。