Iはnumpy.ndarray
2つの1次元のオブジェクトを有し、第一の配列の要素が第二におけるdx
の任意要素内にあるワークアウトしたいです。私は現在持っている何ある配列のどの要素が他の要素の近くにあるかを見つける最も効率的な方法は何ですか?
は
10 loops, best of 3: 16.5 msec per loop
a
とb
があることが保証されている場合は特に、find_all_close
機能を最適化するための最良の方法何を次のようにtimeit
結果を返します
# setup
numpy.random.seed(1)
a = numpy.random.random(1000) # create one array
numpy.random.seed(2)
b = numpy.random.random(1000) # create second array
dx = 1e-4 # close-ness parameter
# function I want to optimise
def find_all_close(a, b):
# compare one number to all elements of b
def _is_coincident(t):
return (numpy.abs(b - t) <= dx).any()
# vectorize and loop over a
is_coincident = numpy.vectorize(_is_coincident)
return is_coincident(a).nonzero()[0]
あるfloat
配列がfind_all_close
に渡されたときに昇順に並べ替えられ、おそらくcythonなどで並べ替えられますか?
実際には、10,000から100,000要素(またはそれ以上)の配列で作業しており、この操作全体を数百種類の異なる配列b
で実行しています。
あなたがdownvotedてしまった理由は考え。あなたの答えLGTM。 –
どちらもありません。それは人生です! –