语境
由于使用numpy.ma
-module 进行屏蔽比直接布尔屏蔽要慢得多,因此我必须使用后者进行argmin
/ argmax
-计算。
一个小对比:
import numpy as np
# Masked Array
arr1 = np.ma.masked_array([12,4124,124,15,15], mask=[0,1,1,0,1])
# Boolean masking
arr2 = np.array([12,4124,124,15,15])
mask = np.array([0,1,1,0,1], dtype=np.bool)
%timeit arr1.argmin()
# 16.1 µs ± 4.88 µs per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit arr2[mask].argmin()
# 946 ns ± 55.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
无论如何,使用argmin
/argmax
返回数组中第一次出现的索引。在布尔掩码的情况下,这意味着索引在arr2[mask]
and not内arr2
。还有我的问题:我需要未屏蔽数组中的索引,同时在屏蔽数组上计算它。
问题
即使我将它应用于布尔掩码版本,如何获得未掩码的argmin
/ argmax
-index ?arr2
arr2[mask]