簡體   English   中英

通過像 NumPy 索引 + 切片那樣固定一個軸,從 3d 矩陣中獲取子數組

[英]Get a subarray from a 3d matrix by fixing one axis like in NumPy index+slices

我的輸入是一個 3x3x3 數組,例如這個:

m = [[[0, 1, 2], [3, 4, 5], [6, 7, 8]],
     [[9, 10, 11], [12, 13, 14], [15, 16, 17]],
     [[18, 19, 20], [21, 22, 23], [24, 25, 26]]]

這些是我想得到的輸出,只使用向量或矩陣運算:

out1 = [[0,1,2],[3,4,5],[6,7,8]]      (corresponding to indice 0 along first axis)
out2 = [[0,1,2],[9,10,11],[18,19,20]] (corresponding to indice 0 along second axis)
out3 = [[0,3,6],[9,12,15],[18,21,24]] (corresponding to indice 0 along third axis)

我知道我可以像這樣使用 numpy 用 python 做到這一點:

cube = np.arange(27).resize(3,3,3)
out1 = cube[0,:,:]
out2 = cube[:,0,:]
out3 = cube[:,:,0]

但我需要在 javascript 中實現它。 我知道如何使用循環和索引來做到這一點,但我認為可能有更有效的方法來做到這一點。

使用numjs包,致力移植NumPy的JS上(具體地, ndarray.pick從底層scijs/ndarray):

 var m = nj.array([[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [[9, 10, 11], [12, 13, 14], [15, 16, 17]], [[18, 19, 20], [21, 22, 23], [24, 25, 26]]]); console.log(m.pick(0,null,null));
 <script src="https://cdn.jsdelivr.net/gh/nicolaspanel/numjs@0.15.1/dist/numjs.min.js"></script>

印刷:

"[[0,1,2],[3,4,5],[6,7,8]]"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM