合并两个numpy数组

3
使用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]])

1
我很困惑——ab与任何事情有什么关系?此外,为什么选择了数字90,91,100,101,102,110 ... - mgilson
@mgilson 当作为二维索引查看时,它们对应于 c - jamylak
@jamylak -- 哦...好的...现在我明白了 :) 谢谢。 - mgilson
1个回答

8

哎呀,这可真是一件费力的事情。首先,我们使用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]])

2
索引技巧 c_ 也可以实现同样的效果:np.c_[c, b[tuple(c.T)]] - wagnerpeer
谢谢!我想在找到答案之前,我可能已经因为饥饿而死了... :-) - Raoul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接