问题标签 [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.
python - 根据边际税率表计算纳税义务
所得税计算 python询问如何在给定边际税率表的情况下计算税款,其答案提供了一个有效的函数(如下)。
但是,它仅适用于单一的收入价值。我将如何调整它以适用于列表/numpy 数组/pandas 系列收入值?也就是说,我如何向量化这段代码?
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 ValueError
并except TypeError
输入“5.0”时,我收到了 ValueError:
item=int(item) ValueError: int() 以 10 为底的无效文字:'5.0'
python-3.x - python3平分序列关联
我正在努力理解 Python 如何在断点序列和等级序列之间建立关联。
结果 = ['F', 'F', 'A', 'C', 'C', 'B', 'A', 'A']
python如何知道低于60的分数== F,60-70之间的分数是D,70-80是C等?
python - 使用 simpy.optimize.bisect 查找函数的零点,具有复杂函数
我是一名机械工程专业的学生,这是我第一次接触 Python 环境,或者 Anaconda 的发行版。我的任务是找到这个函数的零点:
⋅sin()cos()+⋅cos()sin()2−⋅cos()−ℎ⋅sin()=0
使用参数:
是函数上等距点的数量,函数限于:
∈[0,2] 其中是一个 np.array。
绘制函数
问题是,当我尝试将函数插入时bisect(fun, a, b)
,错误提示
“numpy.ndarray”对象不可调用
有人可以帮助一个菜鸟程序员吗?谢谢。
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
python - bisect_right() 怎么会比 insort_right() 慢 4 倍?
我正在尝试优化在竞争性编程网站上超时的解决方案。我开始使用 cProfile,它似乎显示bisect_right()
需要 4 倍于insort_right()
. 这是在输入列表上运行的分析,包含超过 40k 个条目:
我认为所有列表插入都是 O(n),因为平均必须移动 n/2 个元素。简单地确定插入排序列表的位置将是 O(log n)。但在配置文件报告中,它看起来颠倒了:插入器insort_right()
比位置确定器慢bisect_right()
。我哪里错了?这是代码:
谢谢你的关注。
python - blender 2.8 python,使用 bisect 将对象分成两半会产生错误的结果
使用 Blender 2.8,我创建了一个复杂的对象,我想将其拆分为两个单独的对象。
我遵循的过程(所有脚本):创建对象;重复对象;进入编辑模式并用 '''clear_inner=True''' 平分。(完美!)然后选择其他(原始)对象;进入编辑模式并用 '''clear_outer=True''' 平分。现在第一个对象似乎也受到了二等分:只有一些点/面被二等分保留。
我包括一个简单多维数据集的代码:
在图片中,您看到第二个二等分的结果成功地将第一个立方体(“左”)减半。但它也分裂了已经被减半的复制立方体('right'),导致只在平分平面上产生一个面。
为什么它不起作用?我究竟做错了什么?
python - 如何使用 Bisect 对值进行分类?
我有不同的高度(z),我想将它们分类为不同的层。在网上看,似乎 bisect_left 函数是查找值应该出现在列表中的什么位置的好方法。我已将每一层的名称定义为列表中给定 z 值的位置。例如,z=15.75 对应于第 1 层。我编写了下面的函数来实现这一点。
包含一个 if 语句,因为我的 z 值通常是层列表中包含的值。但是,当我运行该线路时
我希望得到 0,但我得到 7。我已经阅读了 bisect 函数的文档,但不明白为什么会出现这种情况。有人可以帮忙吗?
附言。我相信这可能是因为层列表是按降序排列的,对于我的代码的其他部分来说,这种情况很重要,所以理想情况下,任何解决方案都会保持列表不变。
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'])
速度已经快了很多,但是是否有一种真正的矢量化方法来计算相同的“质量”列?
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 等),所以我不知道它们在这种情况下是否能更好地工作。但这里的重点是学习处理冻结集上的二进制搜索。提前致谢。