了解多维数组的矢量形状,我们如何将它转换为一维的新矢量(通过拼合多维数组)?将矢量转换为整数
例如考虑以下的数组:
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