我正在构建一套函数来使用multidimensional-array data structure,我希望能够定义数组的任意切片,这样我就可以实现两个广义的内积任意矩阵(又名张量或 nd数组)。
我读过的一篇APL论文(老实说,我找不到哪篇 - 我读过这么多篇幅)定义左矩阵X
上的矩阵乘积,其维度为A;B;C;D;E;F
和右矩阵{ {1}}尺寸为Y
,其中G;H;I;J;K
为
F==G
其中Z <- X +.× Y
Z[A;B;C;D;E;H;I;J;K] <- +/ X[A;B;C;D;E;*] × Y[*;H;I;J;K]
是 之和,而×将逐个元素应用于两个相同长度的向量。
所以我需要左边的“行”切片和右边的“列”切片。我当然可以使用转置,然后使用“行”切片来模拟“列”切片,但我宁愿更优雅地做。
维基百科关于slicing的文章引出了关于dope vectors的存根,这似乎是我正在寻找的奇迹治疗,但是没有太多可以继续下去。
如何使用涂料矢量来实现任意切片?
(很久以后我注意到Stride of an array有一些细节。)