我有一个较小的数组:
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)]
但它并没有产生我正在寻找的答案。
最佳答案
这是一种方法:
>>> Aval[np.searchsorted(A, A2[np.nonzero(np.in1d(A2, A))[0]])]
array([10, 35, 10, 35, 40, 40, 40, 45])
请注意,为了以默认顺序获取预期索引,您传递给 searchsorted()
的第二个数组应该包含第一个数组的公共(public)项。
关于python - Numpy 使用较小的二维数组来映射具有更多元素的更大数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38404793/