当前位置: 首页 > 面试题库 >

numpy dot()和inner()之间的区别

万俟靖
2023-03-14
问题内容

之间有什么区别

import numpy as np
np.dot(a,b)

import numpy as np
np.inner(a,b)

我尝试过的所有示例都返回了相同的结果。维基百科上有相同的文章吗?在对它的描述中inner(),它的行为在更高维度上是不同的,但是我无法产生任何不同的输出。我应该使用哪一个?


问题答案:

numpy.dot

对于2-D数组,它等效于矩阵乘法,对于1-D数组,其等效于向量的内积(无复共轭)。对于N维,它是a的 最后一个轴 与b 的倒数第二个
的和积:

numpy.inner

一维数组的向量的普通内积(无复共轭),在较高维度上, 最后一个轴上 的和积。

(强调我的。)

作为示例,请考虑使用2D数组的示例:

>>> a=np.array([[1,2],[3,4]])
>>> b=np.array([[11,12],[13,14]])
>>> np.dot(a,b)
array([[37, 40],
       [85, 92]])
>>> np.inner(a,b)
array([[35, 41],
       [81, 95]])

因此,您应该使用一种能够为应用程序提供正确行为的软件。

性能测试

(请注意,我只测试一维情况,因为这是唯一的情况,.dot并且.inner给出相同的结果。)

>>> import timeit
>>> setup = 'import numpy as np; a=np.random.random(1000); b = np.random.random(1000)'

>>> [timeit.timeit('np.dot(a,b)',setup,number=1000000) for _ in range(3)]
[2.6920320987701416, 2.676928997039795, 2.633111000061035]

>>> [timeit.timeit('np.inner(a,b)',setup,number=1000000) for _ in range(3)]
[2.588860034942627, 2.5845699310302734, 2.6556360721588135]

因此,也许.inner速度更快,但目前我的机器已处于相当负载的状态,因此时序不一致,也不一定非常准确。



 类似资料:
  • 问题内容: 这两个连接将给我相同的结果: 与 语句之间的性能或其他方面有什么区别吗? 不同的 SQL 实现之间是否有所不同? 问题答案: 它们在功能上是等效的,但阅读起来可能更清晰,尤其是在查询中包含其他联接类型(即or或)的情况下。

  • 任何连接点(仅在Spring AOP中执行方法),其中目标对象具有@transactional注释:@target(org.springframework.transaction.annotation.transactional) 任何连接点(仅在Spring AOP中执行方法),其中目标对象的声明类型具有@transactional注释:@inne(org.springframework.tra

  • 本文向大家介绍inner join和left join之间的区别详解,包括了inner join和left join之间的区别详解的使用技巧和注意事项,需要的朋友参考一下 前言 关于inner join 与 left join 之间的区别,以前以为自己搞懂了,今天从前端取参数的时候发现不是预想中的结果,才知道问题出在inner join 上了。 需求是从数据库查数据,在前端以柱形图的形式展现出来,

  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:

  • 问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。

  • 问题内容: 有人可以解释一下 和 我不知道“确切”的含义 问题答案: 在这个例子中,什么都没有。当您具有多个具有相似名称的路径时,该参数将起作用: 例如,假设我们有一个显示用户列表的组件。我们还有一个用于创建用户的组件。的网址应嵌套在下。因此,我们的设置可能如下所示: 现在,这里的问题是,当我们转到路由器时,将通过所有定义的路由,并返回它找到的第一个匹配项。因此,在这种情况下,它将首先找到路线,然

  • 问题内容: 我找不到有关该关键字的文档,但在网上看到了使用该关键字的示例。 我正在Oracle模式下进行一些实验,其中有table : 一张表: 和表: 查询应返回部门名称,部门经理的名字和部门所在的城市。 与使用关键字相比,使用关键字的代码似乎返回了一些结果 的代码: 的代码: 两种情况之间是否有区别,还是我偶然发现它们返回相同结果的情况? 问题答案: 根据1992 ANSI SQL参考,INN