将2d数组中的元素更改为数组

时间:2011-11-13 00:26:09

标签: python numpy

在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数组。 我尝试了一些东西,但没有任何效果。应该采取什么样的正确方法? 感谢。

1 个答案:

答案 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]]]