我正在看一些使用该@符号的Python代码,但我不知道它的作用.我也不知道搜索Python文档会搜索什么,或者当@包含符号时Google不会返回相关结果.
我很难理解究竟是如何einsum运作的.我看过文档和一些例子,但它似乎并不坚持.
这是我们在课堂上看到的一个例子:
C = np.einsum("ij,jk->ki", A, B)
Run Code Online (Sandbox Code Playgroud)
对于两个数组A和B
我想这会采取A^T * B,但我不确定(它正在将其中一个的转置正确吗?).任何人都可以告诉我这里发生了什么(通常在使用时einsum)?
numpy文档建议使用数组而不是矩阵来处理矩阵.但是,与octave(我直到最近使用)不同,*不执行矩阵乘法,你需要使用函数matrixmultipy().我觉得这使得代码非常难以理解.
有人分享我的观点,并找到了解决方案吗?
有什么区别
import numpy as np
np.dot(a,b)
Run Code Online (Sandbox Code Playgroud)
和
import numpy as np
np.inner(a,b)
Run Code Online (Sandbox Code Playgroud)
我试过的所有例子都返回了相同的结果.维基百科有两篇相同的文章?!在它的描述中inner()说,它的行为在更高的维度上是不同的,但我不能产生任何不同的输出.我应该使用哪一个?
假设我有以下数据框:
index K1 K2 D1 D2 D3
N1 0 1 12 4 6
N2 1 1 10 2 7
N3 0 0 3 5 8
Run Code Online (Sandbox Code Playgroud)
基本上,我想将此数据框转换为以下内容:
index COL1 COL2
K1 D1 = 0*12+1*10+0*3
K1 D2 = 0*4+1*2+0*5
K1 D3 = 0*6+1*7+0*8
K2 D1 = 1*12+1*10+0*3
K2 D2 = 1*4+1*2+0*5
K2 D3 = 1*6+1*7+0*8
Run Code Online (Sandbox Code Playgroud)
的内容COL2基本上是向量 inindex和 in 之间的点积(又名标量积)COL1。例如,让我们取结果 df 的第一行。在 下index,我们有K1,在COL1我们有D1。查看第一个表,我们知道K1 = [0,1,0]和D1 = …