Skip to main content
 首页 » 编程设计

python之Numpy 使用较小的二维数组来映射具有更多元素的更大数组

2025年05月04日31jpfss

我有一个较小的数组:

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)项。