在numpy中,我有一个二维数组,如:
[
[1 2 3 4 5]
[2 3 1 4 5]
.....
[3 5 2 3 5]
]
我想将此数组中的每个元素替换为1d数组,例如
1 -> [0 0 0 0 1]
2 -> [0 0 0 1 0]
等
这会将元素转换为数组,将整个2d数组转换为3d数组。 我尝试了一些东西,但没有任何效果。应该采取什么样的正确方法? 感谢。
答案 0 :(得分: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]]]