我很难理解究竟是如何einsum运作的.我看过文档和一些例子,但它似乎并不坚持.
这是我们在课堂上看到的一个例子:
C = np.einsum("ij,jk->ki", A, B)
Run Code Online (Sandbox Code Playgroud)
对于两个数组A和B
我想这会采取A^T * B,但我不确定(它正在将其中一个的转置正确吗?).任何人都可以告诉我这里发生了什么(通常在使用时einsum)?
检查元组列表是否包含另一个列表所具有的所有元组的最简单/最快方法是什么.例如:
t1 = [ (1,2), (3,4), (5,6), (7,8), (9,10), (11,12) ]
t2 = [ (3,4), (11,12) ]
Run Code Online (Sandbox Code Playgroud)
将是一个真实的情况,因为t1包含t2中的所有元组.我尝试过类似的东西:
[i for e in t2 for i in t1 if e in i]
sorted(t1) == sorted(t2)
Run Code Online (Sandbox Code Playgroud)
但这似乎总是回归真实.有没有更好的办法?
因此,对于我的研究小组,我试图将一些旧的C++代码转换为Java,并且遇到了一个问题,在C++代码中它执行以下操作:
method(array+i, other parameters)
Run Code Online (Sandbox Code Playgroud)
现在我知道Java不支持指针算法,所以我通过将数组+ i中的子数组复制到数组的末尾到新数组来解决这个问题,但这会导致代码运行速度非常慢(比C++慢100倍)版).有办法解决这个问题吗?我看到有人在这里提到内置方法,但是更快吗?