我有一个带0和1的向量。我想要一个带有重新排列值的新向量,而我有另一个带有映射规则的向量:
示例:
input: 1,0,0,1
rule: 0,3,2,1
after mapping:1,1,0,0
映射向量为每个索引确定新向量中的哪个索引可以找到该值。
我该怎么做?
答案 0 :(得分:0)
我们说a
是原始数组,b
是映射规则。由于映射规则表示" new 向量中的哪个索引可以找到值",因此您需要计算a[c]
,其中c
是<排列b
的强>逆。逆置换的计算是addressed in detail elsewhere,所以我从那里选择一个解决方案:
c = np.zeros(b.size, b.dtype)
c[b] = np.arange(b.size)
new_array = a[c]
示例:如果a为[7, 8, 9]
且b为[1, 2, 0]
,则返回[9, 7, 8]
。我们来看看:
结果是正确的。
如果按照Bort的建议a[b]
进行了[8, 9, 7]
,结果将是b
,这是不同的。实际上,在这个版本中,create(self, request)
的条目表示原始数组中来自的位置:
为了混淆这个问题,你给出的例子是一个等于它的倒数的排列,所以区别就丢失了。