Numpy使用较小的2D阵列来映射具有更多元素的更大阵列

时间:2016-07-15 20:48:19

标签: python numpy

我有一个较小的数组:

A = np.array([2011, 2014, 2015, 2016, 2017])
Aval = np.array([14, 10, 35, 40, 45])

我有另一个阵列:

A2 = np.array([2013, 2014, 2015, 2014, 2015, 2016, 2016, 2016, 2017])

我想创建A2val,以便:

Arval = np.array([10, 35, 10, 35, 40, 40, 40, 45])

所以,我试图使用数组A中的值映射到A2的元素并生成A2val的扩展版本

请注意2011年出现在A中,2013年出现在A2中,但不是分别出现在A2和A.我可以在另一个帖子中使用以下建议:

Aval[np.searchsorted(A,A2)]

但它没有产生我正在寻找的答案。

2 个答案:

答案 0 :(得分:4)

这是一种方式:

searchsorted()

请注意,为了以默认顺序获取预期索引,传递给grid.formedit.js的第二个数组应该包含第一个数组的公共项。

答案 1 :(得分:1)

您可以从AAval构建字典,然后循环浏览A2并找出相应的值:

dic = dict(zip(A, Aval))
[dic.get(a) for a in A2 if dic.get(a) != None]
# [10, 35, 10, 35, 40, 40, 40, 45]