x[:,:,None,:]-x[:,:,:,None]
None相當于在陣列中多加一個維度,
輸入:
x = np.arange(24).reshape((2,3,4))
輸出:
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]]])
x[:,:,None,:]
輸出,形狀(2,3,1,4):
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]]]])
x[:,:,:,None]
輸出,形狀(2,3,4,1):
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]]]])
x[:,:,None,:]-x[:,:,:,None]
這里相減時用到了廣播機制,都先變成(2,3,4,4),再相減
輸出,形狀(2,3,4,4):
array([[[[ 0, 1, 2, 3],
[-1, 0, 1, 2],
[-2, -1, 0, 1],
[-3, -2, -1, 0]],
[[ 0, 1, 2, 3],
[-1, 0, 1, 2],
[-2, -1, 0, 1],
[-3, -2, -1, 0]],
[[ 0, 1, 2, 3],
[-1, 0, 1, 2],
[-2, -1, 0, 1],
[-3, -2, -1, 0]]],
[[[ 0, 1, 2, 3],
[-1, 0, 1, 2],
[-2, -1, 0, 1],
[-3, -2, -1, 0]],
[[ 0, 1, 2, 3],
[-1, 0, 1, 2],
[-2, -1, 0, 1],
[-3, -2, -1, 0]],
[[ 0, 1, 2, 3],
[-1, 0, 1, 2],
[-2, -1, 0, 1],
[-3, -2, -1, 0]]]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/71212.html
標籤:其他
