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

标签 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)]

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

最佳答案

这是一种方法:

>>> 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/

相关文章:

python - 使用 cx-freeze/python 脚本进行 Vista 用户访问控制

python - R 相当于 scipy.integrate.simps()?

python - OpenCV:调整大小窗口不起作用

python - PySpark Dataframe 前向填充所有列

python - 使用 numpy 在数组中查找 N 个并发的索引

Python 2.7 变量类型保持为 int32 而不是转换为 long

python - 如何检查图像的 channel 顺序?

python - 在 Python 中求解数学方程的最简单方法

python - 从稀疏数组的每一行快速拆分列索引数组

python - 使用内插新值将 python numpy 数组的长度加倍