使用 Numpy,我想在给定 b 和 c 的情况下实现以下结果。我研究了堆叠功能,但我无法让它工作。有人可以帮忙吗?
import numpy as np
a=range(35,135)
b=np.reshape(a,(10,10))
c=np.array([[5,5],[5,6],[5,7],[6,5],[6,6],[6,7],[7,5],[7,6],[7,7]])
结果应该是这样的:
np.array([[5,5,90],[5,6,91],[5,7,92],[6,5,100],[6,6,101],[6,7,102],
[7,5,110],[7,6,111],[7,7,112]])
最佳答案
呸!这是一个傻瓜。首先,我们使用 numpy 的花式索引来提取您想要的项目。:
>>> b[tuple(c.T)]
array([ 90, 91, 92, 100, 101, 102, 110, 111, 112])
然后,唯一剩下的就是使用 column_stack
将该数组堆叠回 c
:
>>> np.column_stack((c,b[tuple(c.T)]))
array([[ 5, 5, 90],
[ 5, 6, 91],
[ 5, 7, 92],
[ 6, 5, 100],
[ 6, 6, 101],
[ 6, 7, 102],
[ 7, 5, 110],
[ 7, 6, 111],
[ 7, 7, 112]])
关于python - 在numpy下合并两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16919296/