2013-06-04 92 views
3

使用Numpy,我想在b和c給出下面的結果。我已經研究了堆疊功能,但是我無法使其工作。有人可以幫忙嗎?在numpy下合併兩個數組

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

我m confused - 「a」和「b」與什麼有關?另外,hy是數字'90,91,100,101,102,110 ......'的選擇? – mgilson

+0

@mgilson當被視爲二維索引時,它們對應於'c' – jamylak

+0

@jamylak - 啊......好的......現在我已經明白了:)謝謝。 – mgilson

回答

7

唷!這是一個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]]) 
+2

索引技巧c_將執行相同的操作:'np.c_ [c,b [tuple(c.T)]]' – pwagner

+0

謝謝!我想我會在自己找到答案之前就已經死於自殺... :-) – Raoul