einsum | R Documentation |
Einstein summation is a convenient and concise notation for operations on n-dimensional arrays.
NOTE: Sparse mode of einsum is not available for now.
einsum(subscripts, ...)
subscripts |
a string in Einstein notation where arrays
are separated by ',' and the result is separated by '->'. For
example |
... |
the DelayedArrays that are combined. |
This function is an extension of the einsum
by DelayedArray.
The einsum
function returns an array with one dimension for each index
in the result of the subscripts
.
For example "ij,jk->ik"
produces a 2-dimensional array,
"abc,cd,de->abe"
produces a 3-dimensional array.
library("DelayedArray") library("DelayedRandomArray") darr1 <- RandomUnifArray(c(4,8)) darr2 <- RandomUnifArray(c(8,3)) # Matrix Multiply darr1 %*% darr2 DelayedTensor::einsum("ij,jk -> ik", darr1, darr2) # Diag mat_sq <- RandomUnifArray(c(4,4)) DelayedTensor::diag(mat_sq) einsum("ii->i", mat_sq) # Trace sum(DelayedTensor::diag(mat_sq)) einsum("ii->", mat_sq) # Scalar product darr3 <- RandomUnifArray(c(4,8)) darr3 * darr1 einsum("ij,ij->ij", darr3, darr1) # Transpose t(darr1) einsum("ij->ji", darr1) # Batched L2 norm arr1 <- as.array(darr1) arr3 <- as.array(darr3) darr4 <- DelayedArray(array(c(arr1, arr3), dim = c(dim(arr1), 2))) c(sum(darr1^2), sum(darr3^2)) einsum("ijb,ijb->b", darr4, darr4)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.