有什么方法可以在 sympy 中进行整数除法吗?

2024-02-02

我有一个很长的表达式,我认为可以简化,我想sympy将是最好的方法。不幸的是,这个公式依赖于几个整数除法,我找不到任何方法来表示这些sympy.

>>> x=Symbol('x')
>>> (x+1)/2
x/2 + 1/2

显然不是我想要的,1/2不是整数。

>>> (x+1)//2
TypeError: unsupported operand type(s) for //: 'Add' and 'int'

明显地sympy不处理//.

>>> Integer((x+1)/2)
#   A long list of error messages, ending with ...
TypeError: Integer can only work with integer expressions.

看起来Integer仅适用于常数,不适用于公式。

有一个功能trunc但它似乎没有做任何与我想要的类似的事情。

有没有什么方法可以表示整数除法sympy?


Criteria

我假设你想要一个函数div通过以下测试:

from sympy import sympify, simplify, Symbol

def test_div(div):
    # check that div behaves as intended for integers
    for i in range(-5,5):
        for j in range(-5,5):
            if j==0: continue
            assert i//j == div(sympify(i),sympify(j))

    # check that div’s output can be simplified
    x = Symbol("x", integer=True)
    assert simplify( div(x+1,2) - div(x-1,2) ) == 1

Modulo

您可以使用模运算符实现整数除法,如下所示:

div = lambda x,y: (x-x%y)/y

由于 SymPy 支持模运算并能够对其进行简化,因此该函数通过了上述测试。但是,如果无法完全简化,您最终会得到可能不希望的模表达式。

Floor

正如评论中已经提到的,SymPy 提供了floor函数,可用于获取整数除法(这也是//表达式的运算符已实现):

div = lambda x,y: sympy.floor(x/y)

然而,floor不支持简化,因此第二次测试失败。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有什么方法可以在 sympy 中进行整数除法吗? 的相关文章

  • 相当于 java PBKDF2WithHmacSHA1 的 Python

    我的任务是构建一个 API 的使用者 该 API 需要带有 UNIX 时间种子值的加密令牌 我看到的示例是使用我不熟悉的 Java 实现的 在阅读文档和其他堆栈文章后一直无法找到解决方案 使用javax crypto SecretKey j
  • 使用 Python 或 Django 处理收到的电子邮件?

    我了解如何通过 Django 发送电子邮件 但我希望用户能够回复电子邮件 如果他们发送 以及我收到 的电子邮件包含与某个字符串匹配的消息 我将调用一个函数 我已经做了一些谷歌搜索 但除了自己制作脚本之外似乎没有什么好的解决方案 如果有什么东
  • 如何在后台运行python程序以保持活动窗口相同

    我编写了一个程序 可以将前景窗口更改为显示器尺寸的 85 并且要成功运行 前景窗口需要保持不变 我已将 python 脚本 pyw 放入批处理文件 运行 pythonw 并在桌面上创建了批处理文件的快捷方式 并提供了快速运行它的快捷方式 我
  • 用于在 Windows 中自动执行桌面活动的 Python 代码

    我想使用 Python 在 Windows 环境中自动化桌面活动 怎样才能做到呢 一些例子也会有帮助 我所说的桌面活动是指控制鼠标和键盘 访问活动窗口属性 双击桌面上的图标 最小化和最大化窗口 通过键盘向输入弹出窗口输入数据等操作 看一下S
  • 防止脚本目录被添加到Python 3中的sys.path

    有没有办法阻止脚本的目录被添加到python3中的sys path 由于导入在 python 中是相对的 因此我遇到了导入冲突 我正在处理的一个遗留项目有一个名为logger py在与内置冲突的脚本的根目录中logger 我使用的自定义构建
  • 如何为 apscheduler 指定“记录器”

    我正在尝试学习如何使用 Python 的 apscheduler 包 但它会定期抛出以下错误 No handlers could be found for logger apscheduler scheduler 该消息似乎与计划作业中的错
  • Python:按条件绘制多个正/负条形图

    这是我第一次用 python 绘制条形图 我的 df 操作 key descript score 0 noodles taste 5 1 noodles color 2 2 noodles health 3 3 apple color 7
  • 如何使用Python在没有窗口的情况下在屏幕上显示文本

    问题 我需要在没有窗口的情况下直接将文本写入屏幕 文本需要显示在所有其他窗口和全屏应用程序之上 并且不应以任何方式单击或交互 Example The text doesn t need to have a transparent backg
  • SQLAlchemy+pymysql 错误:sqlalchemy.util.queue.Empty

    尝试使用 Eclispse 在 Ubuntu 上运行 Python 2 SQLAlchemy 0 8 和 MySQL5 2 但我不断收到以下错误 我使用 pymysql 实际上是 pymysql3 引擎 模块监视器 from sqlalch
  • 使用 Python 读取 App Engine 上的文件?

    是否可以在 GAE 上打开文件来读取其内容并获取最后修改的标签 我收到 IOError Errno 13 文件无法访问 我知道我无法删除或更新 但我相信阅读应该是可能的 有人遇到过类似的问题吗 os stat f r st mtim 您可能
  • SQLAlchemy - 如何使用 SQLAlchemy 做出“django 选择”?

    在 Django 中 我们可以使用非常简单的 选择 例如 GENDER CHOICES M Male F Female class Foo models Model gender models CharField max length 1
  • self.assertRaises 作为上下文管理器,但 msg 参数未按预期工作

    请检查以下代码 import unittest CORRECT MESSAGE Correct message WRONG MESSAGE Wrong message def fn raise KeyError CORRECT MESSAG
  • 在 LINUX 上使用 Python 连接到 OLAP 多维数据集

    我知道如何在 Windows 上使用 Python 连接到 MS OLAP 多维数据集 嗯 至少有一种方法 通常我使用 win32py 包并调用 COM 对象进行连接 import win32com client connection wi
  • Keras ImageDataGenerator 相当于 csv 文件

    我在文件夹中排序了一堆数据 如下图所示 我需要构建一个 DataIterator 以便将数据放入神经网络模型中 当数据是图像时 我找到了很多例子来解决这个问题 使用 Keras 类图像数据生成器及其方法流自目录 但当数据是 csv 结构时则
  • 在 Python 中快速确定小于 10 亿的数字是否为素数

    我目前在 python 中检查数字素数的算法对于 1000 万到 10 亿之间的数字来说速度很慢 我希望它能够得到改进 因为我知道我永远不会得到超过 10 亿的数字 背景是我无法获得足够快的实现来解决项目 Euler 的问题 60 我在 7
  • 如何检索 SQLAlchemy 结果集的 python 列表? [复制]

    这个问题在这里已经有答案了 我有以下查询来检索单列数据 routes query select schema stop times c route number schema stop times c stop id stop id dis
  • 预训练 inception v3 模型的层名称(tensorflow)[重复]

    这个问题在这里已经有答案了 任务是获取a的每层输出预训练的 cnn inceptionv3 https www tensorflow org versions master tutorials image recognition index
  • Django:单击按钮加载另一个模板

    我已经在 django 项目上工作了几个星期 只是玩玩以便掌握它的窍门 我有点困惑 我现在有一个名为 home html 的模板 我想知道是否可以将另一个名为 profile html 的模板设置为 home html 模板上的链接 我有一
  • 重定向到破折号中的 url

    我正在使用 dash 构建一个仪表板 每当单击特定数据点时 我都会创建一个唯一的 url 如何将用户重定向到此创建的 url 我正在使用下面给出的代码 每当有人单击任何数据点时 单击事件就会触发并执行回调函数 app layout html
  • 如何将 c_uint 的 ctypes 数组转换为 numpy 数组

    我有以下 ctypes 数组 data ctypes c uint 100 我想创建一个 numpy 数组np data包含来自 ctypes 数组数据的整数值 ctypes 数组显然稍后会填充值 我看到numpy中有一个ctypes接口

随机推荐