gpt4 book ai didi

python - 给定置换数组,找到置换

转载 作者:太空宇宙 更新时间:2023-11-04 08:25:56 24 4
gpt4 key购买 nike

我有两个 numpy 整数数组,

import numpy

a = numpy.array([1, 3, 5, 0])
b = numpy.array([3, 5, 0, 1])

我知道它们是彼此的排列。我怎样才能找到排列,即整数数组 i 这样

a[i] == b

?对整个数组进行比较的显式 for 循环有效,但似乎效率低下。

如果它对行数组的排列有效,则加分

import numpy

a = numpy.array([
[1, 2],
[3, 7],
[5, 12],
[0, 4],
# ...
])
b = numpy.array([
[3, 7],
[5, 12],
[0, 4],
[1, 2],
# ...
])

最佳答案

这是一个使用 argsort 两次的方法。它似乎比@Divakar 的快了几个百分点:

enter image description here

from simple_benchmark import BenchmarkBuilder, MultiArgument
import numpy as np

B = BenchmarkBuilder()

@B.add_function()
def div(A,B):
sidx = A.argsort()
return sidx[np.searchsorted(A,B,sorter=sidx)]

@B.add_function()
def pp(A,B):
oa,ob = (x.argsort() for x in (A,B))
o = np.empty_like(oa)
o[ob] = oa
return o

@B.add_arguments('array size')
def argument_provider():
for exp in range(8, 30):
dim_size = int(1.4**exp)
a = np.random.permutation(dim_size)
b = np.random.permutation(dim_size)
yield dim_size, MultiArgument([a,b])

r = B.run()
r.plot()

import pylab
pylab.savefig('bm.png')

关于python - 给定置换数组,找到置换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57184214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com