元素方式查找一个ndarray到另一个不同形状的ndarray

时间:2010-06-02 09:38:43

标签: python numpy

我是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

1 个答案:

答案 0 :(得分:2)

您可以直接使用NumPy的高效阵列操作:

Y_dict = dict(Y)
Z = vectorize(lambda x: Y_dict[x])(X)

这种方法的优点是可以处理任何X维度(1维数组,2维或N维数组......)。

矢量化函数依次自动将字典查找应用于数组X的每个元素。

第一行就是出于优化目的;否则,字典构造将针对X中的每个元素进行。