2011-11-13 44 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]]]