使用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]])
答案 0 :(得分:8)
唷!这是一个doosie。首先,我们使用numpy的花式索引来提取你想要的项目。:
>>> b[tuple(c.T)]
array([ 90, 91, 92, 100, 101, 102, 110, 111, 112])
然后,唯一剩下的就是使用c
将该数组堆叠回column_stack
:
>>> 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]])