纽比:乘以1的向量

2024-09-28 20:16:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在学习计算机科学教科书中的一些概念。线性代数被大量使用,他们在教科书中展示的例子都使用Numpy。在

尤其是有一个表达让我完全困惑,因为它似乎是一个完全无用的表达。从课本上一字不差地抄袭,上面写着:

normalisers = sum(exp(outputs),axis=1)*ones((1,shape(outputs)[0]))

因此,为了简化起见,我将删除exp(它与这里的问题无关),它给出了:

sum(outputs,axis=1)*ones((1,shape(outputs)[0]))

其中outputs是二维Numpy array(矩阵)。在

据我所知,这只是将outputs矩阵中的所有行相加,然后将得到的向量元素乘以所有这些元素的向量。所以。。。乘以这里的所有一有什么意义?它根本不会改变数值。在

这是教科书上的一个错误,还是我没有看到乘以所有的1可能会对这里的值产生任何影响?我现在只对Numpy有点熟悉,所以我不确定我是否只是误解了这个表达的含义。在


Tags: numpy概念元素ones矩阵outputs向量例子
1条回答
网友
1楼 · 发布于 2024-09-28 20:16:18

正如mutzmatron在注释中所写的,当outputs是一个数组时,这种乘法是一种非常巧妙的方法,可以将{}的结果从(n,)改为{}。快速而惯用的方法是

sum(exp(outputs), axis=1).reshape(1, -1)

与教科书中的方式不同,这是可读的和可伸缩的,因为reshape需要的时间和内存是恒定的,而不是线性的。在

但是,如果outputs不是数组而是可怕类型np.matrix的对象,则结果完全不同:

^{pr2}$

(不过,这还是一种人为的表达不同操作的方式。)

相关问题 更多 >