瞭解多維數組的矢量形狀,我們如何將它轉換爲一維的新矢量(通過拼合多維數組)?將矢量轉換爲整數
例如考慮以下的數組:
arr = [
[
[ nil, nil ],
[ nil, nil ],
[ nil, nil ]
],
[
[ nil, nil ],
[ nil, nil ],
[ nil, nil ]
]
]
arr[0][0][0] = "A"
arr[1][0][1] = "B"
arr # =>
[
[
[ "A", nil ],
[ nil, nil ],
[ nil, nil ]
],
[
[ nil, "B" ],
[ nil, nil ],
[ nil, nil ]
]
]
...其中A
是原點和B
是矢量的目的地。可以這樣寫:
shape = [2, 3, 2]
vector = [1, 0, 1]
從目前來看,假設我們壓扁arr
,我們怎麼可能轉化載體?換句話說,如何將這個三維向量轉化爲一維的新向量?
這是一種特殊情況,因爲矢量的原點也是數組的第一個座標。因此,我們可以發現,其結果:
arr.flatten.index("B") # => 7
這裏是一個二維數組又如:
arr = [
[ "A", nil ],
[ "B", nil ],
[ nil, nil ],
[ nil, nil ],
[ nil, nil ]
]
我們可以這樣寫:
shape = [2, 5]
vector = [1, 0]
,並再次,
arr.flatten.index("B") # => 2
但這裏是一個更復雜的cated例如,具有負向量:
arr = [
[ "B", nil ],
[ "A", nil ],
[ nil, nil ],
[ nil, nil ],
[ nil, nil ]
]
shape = [2, 5]
vector = [-1, 0]
如何以下的方法可以寫成?
vector2index(shape, vector) # => -2
一個例子(簡單)用1D陣列:
arr = [ nil, "B", nil, nil, "A", nil, nil ]
shape = [7]
vector = [-3]
vector2index(shape, vector) # => -3
有一種簡單的方法來平坦的載體從任何尺寸的陣列?謝謝。
您能否給一個相關的鏈接來解釋vector2index函數。 – nightf0x
有沒有簡單的方法來解釋你的問題?謝謝。 –
@ nightf0x&marc-andre-lafortune,謝謝你的評論。我剛剛重寫了我的問題,試圖更清楚。 – Doug