2d ndarrayの要素を配列に変更する

numpyでは、次のような2次元配列があります。

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

この配列の各要素を1次元配列に置き換えたいとします。

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

これは要素を配列に変換し、2次元配列全体を3次元配列に変換します。 私はいくつかのことを試みたが、何も働かなかった。そうする正しい方法は何でしょうか? ありがとう。

3

1 答え

これがあなたの2次元配列であるとします:

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]

Then the array you desire is given by 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]]]
4
追加された