2011-11-13 35 views
3

在numpy的,我有一個二維數組,如:更改2D ndarray元件成陣列

[ 
[1 2 3 4 5] 
[2 3 1 4 5] 
..... 
[3 5 2 3 5] 
] 

欲這個陣列中的每個元件更換成一維數組,例如

1 -> [0 0 0 0 1] 
2 -> [0 0 0 1 0] 

這將元件成陣列,並且整個2D陣列轉換成一個3D陣列。 我嘗試了幾件事,但沒有奏效。什麼應該是正確的方式呢? 謝謝。

回答

4

假設這是你的二維數組:

x=np.random.randint(1,3,size=(3,2)) 
print(x) 

# [[2 2] 
# [1 2] 
# [2 1]] 

創建數組:

y=np.array([[0,0,0,0,0],[0,0,0,0,1],[0,0,0,1,0]]) 

你可以看一下在這個數組作爲映射:

0 --> [0,0,0,0,0] # y[0] is mapped to [0,0,0,0,0] 
1 --> [0,0,0,0,1] # y[1]  ...  [0,0,0,0,1] 
2 --> [0,0,0,1,0] # y[2]  ...  [0,0,0,1,0] 

則數組你慾望由y[x]

print(y[x]) 

# [[[0 0 0 1 0] 
# [0 0 0 1 0]] 

# [[0 0 0 0 1] 
# [0 0 0 1 0]] 

# [[0 0 0 1 0] 
# [0 0 0 0 1]]]