最近在搞python opencv 想要对一个numpy二维数组进行map,发现太慢了,难以实际使用.在网上查到了使用numpy.ndarray 查表的方法,但是出了二维的,供大家参考,可以大幅提升实战速度.
import numpy as np
a = np.array([
[1,2,3],
[4,5,6],
[7,8,9]
])
b =np.array([
[[0,1],[1,2]],
[[2,1],[1,1]]
])
a[b[:,:,0],b[:,:,1]]##这里的意思是:把b[:,:,0]所有元素为行索引,b[:,:,1]为列索引,这样就出来了一个三维对二维的映射
print(a.shape)##(3, 3)
print(b.shape)##(2, 2, 2)
print(a[b[:,:,0],b[:,:,1]].shape)##(2, 2)
a[b[:,:,0],b[:,:,1]]
=array([[2, 6],
[8, 5]])
希望有所启发