我是numpy的新手。难怪有没有办法查找两个不同形状的ndarray? 例如,我有2个ndarray如下:
X = array([[0, 3, 6],
[3, 3, 3],
[6, 0, 3]])
Y = array([[0, 100],
[3, 500],
[6, 800]])
并想在Y中查找X的每个元素,然后能够返回Y的第二列:
Z = array([[100, 500, 800],
[500, 500, 500],
[800, 100, 500]])
谢谢,fahhean
答案 0 :(得分:2)
您可以直接使用NumPy的高效阵列操作:
Y_dict = dict(Y)
Z = vectorize(lambda x: Y_dict[x])(X)
这种方法的优点是可以处理任何X维度(1维数组,2维或N维数组......)。
矢量化函数依次自动将字典查找应用于数组X的每个元素。
第一行就是出于优化目的;否则,字典构造将针对X中的每个元素进行。