回答this的问题,我面临着试图有效地确定给定排列是否为even or odd的问题。我有点蛮力,因为我只需要担心三个维度,但是我对通过numpy
到目前为止,我的解决方案是:
def perm_sign(a):
a = np.asarray(a)
l = a.size
i, j = np.tril_indices(l, -1)
return np.product(np.sign(a[i] - a[j]))
基本上,假设a
是np.arange(a.size)
的某种排列(类似于np.argsort
输出),确定a
是np.arange(a.size)
的偶数或奇数排列。输出1
表示偶数排列,-1
表示奇数排列。
我认为必须有一种比np.product