在矩阵列中添加外部产品的更快捷方式

时间:2017-04-11 09:03:18

标签: numpy vectorization

common/

在矩阵列中添加外部产品的更快方法,其中矩阵为v。 因此,当沿着另一个矩阵的列获取外部产品时,更快的方式来添加矩阵?

2 个答案:

答案 0 :(得分:3)

matrix-multiplication与其转置版本一起使用 -

v.dot(v.T)

说明:您基本上正在执行v[:,None,:]*v[None,:,:](如果您在每次迭代时打印外部产品结果并进行研究),然后沿着产品的最后一轴sum-reducing执行。退回并从输入数组的角度来看,我们在v的两个版本之间执行逐元素乘法,这样最后一个轴将保持对齐,最后保持sum-reduced,而剩下的两个轴将 spread_out 作为最终结果的两个轴。 sum-reductionmatrix-multiplication及其转置之间基本相同v

答案 1 :(得分:0)

如果您熟悉爱因斯坦求和符号,<?php $usertype= $_POST['usertype']; $empID= $_POST['id']; $pdo = new PDO('mysql:host=localhost;dbname=db8', "root", ""); $stmt = $pdo->prepare("UPDATE `table1` SET `UserType`= ? WHERE `ID`= ?"); $stmt->execute([$usertype, $empID]); echo "<form action='' method='post'>"; echo "<p>please type the employee ID</p><input type='number' name='id'>"; echo "<p> Change to: </p><select name='usertype'> <option>Admin</option> <option>Basic User</option> </select>"; echo "<input type='submit' value='submit'>"; ?> 可以使可视化变得更容易:

np.einsum

与:

相同
sum_v = np.einsum('ik,jk->ij', v, v)

正如@Divakar所指出的那样,sum_v = np.einsum('ik,kj->ij`, v, v.T) 在功能上等同于(并且慢于)np.einsum('ik,kj->ij', ...)