Matrix julia中除一个索引外的所有索引的迭代器

Matrix julia中除一个索引外的所有索引的迭代器,matrix,iterator,julia,tensor,Matrix,Iterator,Julia,Tensor,我想用已知秩的julia矩阵*张量写一个一般的张量运算 我的张量是一个有n个索引的对象,例如,张量1,a_2,…,a_n,我的矩阵只对i的索引有影响。因此,在除第i个索引外的每个索引上都有一个遍历的迭代器是很方便的。是否有一个简单的函数来实现这一点,或者您是否知道如何以良好的性能来实现这一点?我还需要迭代器的结果,我认为是笛卡尔指数形式,因为我必须以矩阵向量乘法的方式迭代最后一个索引 我的第一个想法是在第i个索引之前和之后获得索引的所有排列,但这些排列的生成似乎很乏味 我希望你能帮助我, 顺致敬

我想用已知秩的julia矩阵*张量写一个一般的张量运算

我的张量是一个有n个索引的对象,例如,张量1,a_2,…,a_n,我的矩阵只对i的索引有影响。因此,在除第i个索引外的每个索引上都有一个遍历的迭代器是很方便的。是否有一个简单的函数来实现这一点,或者您是否知道如何以良好的性能来实现这一点?我还需要迭代器的结果,我认为是笛卡尔指数形式,因为我必须以矩阵向量乘法的方式迭代最后一个索引

我的第一个想法是在第i个索引之前和之后获得索引的所有排列,但这些排列的生成似乎很乏味

我希望你能帮助我, 顺致敬意,
莱普米勒

不清楚你到底在追求什么。可以在忽略矩阵第i行的索引上获得迭代器,如

Iterators.filter(x->x[1] != i, CartesianIndices(a))

这对你有用吗,或者你能把问题编辑得更明确些吗?

你到底想问什么还不清楚。可以在忽略矩阵第i行的索引上获得迭代器,如

Iterators.filter(x->x[1] != i, CartesianIndices(a))

这对您有用吗,或者您可以将问题编辑得更明确一些吗?

FWIW,还有一个很好的小程序包,它允许您删除特定的列/行,如下所示:

julia> using InvertedIndices

julia> x = rand(4,4)
4×4 Array{Float64,2}:
 0.779118  0.66097   0.335433  0.583011
 0.284284  0.799394  0.353914  0.146769
 0.716189  0.605426  0.2449    0.92238
 0.140876  0.210152  0.810854  0.37236

julia> x[Not(2), Not(4)] # drop second row and 4th column
3×3 Array{Float64,2}:
 0.779118  0.66097   0.335433
 0.716189  0.605426  0.2449
 0.140876  0.210152  0.810854

FWIW,还有一个很好的小程序包,名为,它允许您删除特定的列/行,如下所示:

julia> using InvertedIndices

julia> x = rand(4,4)
4×4 Array{Float64,2}:
 0.779118  0.66097   0.335433  0.583011
 0.284284  0.799394  0.353914  0.146769
 0.716189  0.605426  0.2449    0.92238
 0.140876  0.210152  0.810854  0.37236

julia> x[Not(2), Not(4)] # drop second row and 4th column
3×3 Array{Float64,2}:
 0.779118  0.66097   0.335433
 0.716189  0.605426  0.2449
 0.140876  0.210152  0.810854

你确定不只是想使用包实现的矩阵*张量乘法吗?你确定不只是想使用包实现的矩阵*张量乘法吗?