Python 中高效的逐元素函数计算

2024-04-25

我有以下优化问题。给定两个 np.arraysX,Y和一个函数K我想尽快计算矩阵关联 gram_matrix 其中(i,j)-th元素计算为K(X[i],Y[j]).

这里有一个使用嵌套 for 循环的实现,它被认为是解决此类问题最慢的。

def proxy_kernel(X,Y,K):
    gram_matrix = np.zeros((X.shape[0], Y.shape[0]))
    for i, x in enumerate(X):
        for j, y in enumerate(Y):
            gram_matrix[i, j] = K(x, y)
    return gram_matrix

非常感谢任何帮助。


np.vectorize确实提高了速度 - 大约 2 倍(这里我使用math.atan2作为一个带有 2 个标量参数的黑盒函数)。

In [486]: X=np.linspace(0,1,100)
In [487]: K_vect=np.vectorize(math.atan2)

In [488]: timeit proxy_kernel(X,X,math.atan2)
100 loops, best of 3: 7.84 ms per loop

In [489]: timeit K_vect(X[:,None],X)
100 loops, best of 3: 3.49 ms per loop

In [502]: timeit np.arctan2(X[:,None],X)  # numpy compiled loop
1000 loops, best of 3: 871 µs per loop

where

def proxy_kernel(X,Y,K):
    gram_matrix = np.zeros((X.shape[0], Y.shape[0]))
    for i, x in enumerate(X):
            for j, y in enumerate(Y):
                    gram_matrix[i, j] = K(x, y)
    return gram_matrix

只要K是一个黑匣子,您受到调用时间的限制K the X.shape[0]*Y.shape[0]次。您可以尝试最小化迭代时间,但您仍然受到所有这些函数调用的限制。


https://stackoverflow.com/a/29733040/901925 https://stackoverflow.com/a/29733040/901925通过利用高斯核加速计算axis的参数np.linalg.norm功能。

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

Python 中高效的逐元素函数计算 的相关文章

随机推荐

  • 从groupby中的列获取模式[重复]

    这个问题在这里已经有答案了 我试图获取 groupby 对象中列的模式 但出现此错误 incompatible index of inserted column with frame index 这是我遇到的问题 我不知道如何解决它 任何帮
  • 哪个类应该存储查找表? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 世界上有不同地点的代理 但任何地点都只有一个代理 每个特工都知道他在哪里 但我还需要快速检查给定位置是否有特工 因此 我还维护了一张从位置到代理
  • 对角度数据表中括号内的数字进行排序

    我在用角度数据表 http l lin github io angular datatables 根据网络服务响应填充我的表 我的网络服务返回一个如下所示的 json id 1 name abc count 20 id 2 name abc
  • 计算和合并行

    我有一个表 通过将国家 地区代码添加到每行的 国家 地区代码 列来记录 Web 应用程序中的用户位置 每行代表对特定区域的访问 所以我有一些数据 比如 COL1 COL2 COL3 countrycode asd asd asd NZ as
  • 使用 Kafka Streams 在输出中设置时间戳无法进行转换

    假设我们有一个变压器 用 Scala 编写 new Transformer String V String V var context ProcessorContext override def init context Processor
  • 如何在弹性搜索(aws)中存储日期范围数据并搜索范围?

    我正在尝试在弹性搜索中存储酒店房间可用性 然后我需要 搜索从某个日期到另一个日期可用的房间 我想出了 存储数据以确保可用性的两种方式 如下 这里可用性字典存储了所有日期 每个日期键的值是 true 或 false 代表其可用 那天与否 id
  • R:有没有一种简单有效的方法来获取分块对角矩阵的构建分块矩阵列表?

    我正在寻找一个 内置 函数 它通过以下方式有效地返回块对角矩阵的构建块列表 而不是迭代插槽以手动获取列表 construct bdiag matrix library Matrix listElems lt list matrix 1 4
  • 生成 Java JNI 标头

    我想做的就是使用 JDK Javah exe 程序生成 JNI 头文件 但无论我尝试什么 我都会收到错误消息 错误 找不到 ddg ndkTest NativeLib 的类文件 其中 ddg ndkTest 是命名空间 NativeLib
  • AWS S3 StringLike条件阻止对存储桶的请求

    我有以下 s3 IAM 政策 它的目的是允许我从存储桶内的 temp prod tests 位置复制文件或将文件放入下面的存储桶中 在策略中 我添加了 StringLike 条件 我希望该条件允许策略中的权限允许在对象前缀包含时进行复制和放
  • 使用多个参数多次调用傀儡定义的资源

    我有一个简单的木偶定义的资源 如下所示 define mything number device otherthing file place number ensure gt directory mount place number dev
  • 使用vuex时如何在typescript语法中使用mapState函数?

    我在与 vuex 集成的 vuejs 项目中使用 typescript 语法 我想使用 ts 文件中计算的 mapState 方法 但出现语法错误 目前我正在使用文档建议的计算函数语法 我的意思是 get counter return th
  • 为什么这段Java代码会触发ConcurrentModificationException?

    在循环的第一行中 我收到错误 但我不明白为什么 根据我的阅读 只有当我迭代一个集合并尝试同时修改它时 才会发生这种情况 但事实并非如此 在代码中 list属于类型ArrayList
  • 在 Spring 中,为什么 POJO 上的 CGLib 的行号会丢失?

    Spring MVC Web 应用程序 我有一个不带行号的堆栈跟踪 显示在底部 我认为这是由于 CGLib 在控制器上运行所致 但这对我来说很奇怪 实际的异常发生在ServerBatchRemoteRequestAcceptor 一个没有注
  • 使用 RCurl 登录 WordPress

    我想使用 R 的 RCurl 包登录 WordPress 网站 以便安装 WordPress 插件 可能在 WordPress 的某些选项页面上使用 postForm 由于该网站受密码保护 我请求您帮助如何验证我的 R 会话 我发现以下三个
  • AND 运算符不能与布尔值和字符串一起使用

    我有一个 LINQ2SQL 语句 其中使用两个条件 var query1 from r in dt Test where r ID 92 r Status I select r ID r Status I 但它给了我一个错误 即 AND 运
  • UITableView 具有不同的可选部分?

    我正在寻找一种 好 的方法来解决一些特殊要求 我有一个包含不同部分的 UITableView 例如 基础数据 关于我 兴趣 Images 基本数据始终包含值 但仍然存在可变行数 所有其他 类别 可以包含行 也可以为空 如果没有数据 则不应显
  • 获取比较指令的值

    据我了解 cmp 指令将设置标志寄存器中的一些位 然后 您可以使用 jle jnp 等指令基于这些指令进行分支 我想知道如何从比较中恢复整数值 示例 以下是有效的 c 语法 y x a gt 13 因此 a 与 13 进行比较 得到 tru
  • 如何将 dateTimePicker 值设置为 DateTime.MaxValue

    这会在运行时生成错误 dateTimePicker Value DateTime MaxValue 你不能 DateTimePicker 支持的最大日期为DateTimePicker MaximumDateTime http msdn mi
  • 如何在 C++ 中更改活动桌面壁纸

    你好 我想写一个小程序来更改 Windows 7 中的壁纸 我想使用以下代码 include windows h include wininet h include shlobj h include wchar h include
  • Python 中高效的逐元素函数计算

    我有以下优化问题 给定两个 np arraysX Y和一个函数K我想尽快计算矩阵关联 gram matrix 其中 i j th元素计算为K X i Y j 这里有一个使用嵌套 for 循环的实现 它被认为是解决此类问题最慢的 def pr