看起来用索引数组对numpy记录数组进行索引非常慢。然而,同样的操作可以使用
这种差异背后的原因是什么?为什么没有以更快的方式实现记录数组的索引?(另请参见排序numpy结构化和记录数组非常缓慢)
显然,两个结果都给出了相同的答案。
np.view
快10-15倍。这种差异背后的原因是什么?为什么没有以更快的方式实现记录数组的索引?(另请参见排序numpy结构化和记录数组非常缓慢)
mydtype = np.dtype("i4,i8")
mydtype.names = ("foo","bar")
N = 100000
foobar = np.zeros(N,dtype = mydtype)
foobar["foo"] = np.random.randint(0,100,N)
foobar["bar"] = np.random.randint(0,10000,N)
b = np.lexsort((foobar["foo"],foobar["bar"]))
timeit foobar[b]
100 loops, best of 3: 11.2 ms per loop
timeit foobar.view("|S12")[b].view(mydtype)
1000 loops, best of 3: 882 µs per loop
显然,两个结果都给出了相同的答案。