在 numpy 中,我有一个二维数组,例如:
[
[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 数组。 我尝试了几件事,但没有任何效果。这样做的正确方法应该是什么? 谢谢。
最佳答案
假设这是您的二维数组:
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]]]
关于python - 将二维数组中的元素更改为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8108649/