rubik のコメントが言ったように、python ループは、ベクトル化された関数が動作する速度に比べて遅いです。ベクトル化された関数を使用して、単一の要素 (より複雑なベクトル化された関数に入ると、より多くの要素) で機能し、単一の値を返す関数を定義します。一般的なベクトル化された関数は、加算や乗算のように既に定義されています。
例えば。
arr = numpy.arange(10)
arr = arr * numpy.arange(10, 20)
# times all elements arr by the respective element in other array
arr = arr + 1
# add 1 to all elements
@numpy.vectorize
def threshold(element):
if element < 20:
return 0
else:
return element
# @ notation is the same as
# threshold = numpy.vectorize(threshold)
arr = threshold(arr)
# sets all elements less than 20 to 0
ただし、形状を見つけようとしているので、見ているピクセルの領域を示す価値があるかもしれません。そのため、探しているものを見つけようとするより良い方法があるかもしれません。