1行あたり1つのセルを定義するマスクを使用して、numpy行列に挿入しようとしています。効果的には、各行に値を挿入していますが、異なる列を使用しています。私は成功せずnp.insert()
を使用しようとしました:私は試してみて、x
マスクに基づいて挿入Numpy:各行の異なる列に値を挿入します。
>>> x
array([[False, False, True, False, False],
[False, False, True, False, False],
[False, False, True, False, False],
[False, False, True, False, False],
[False, False, True, False, False]], dtype=bool)
>>> y = np.arange(25).reshape(5,5)
>>> y
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
>>> np.insert(y, np.where(x)[1], 99, axis=1)
array([[ 0, 1, 99, 99, 99, 99, 99, 2, 3, 4],
[ 5, 6, 99, 99, 99, 99, 99, 7, 8, 9],
[10, 11, 99, 99, 99, 99, 99, 12, 13, 14],
[15, 16, 99, 99, 99, 99, 99, 17, 18, 19],
[20, 21, 99, 99, 99, 99, 99, 22, 23, 24]])
いつでも、それが値を複製終わります。
また、マスクは、単純な列ではない方法でセットアップされる可能性があります。
>>> x = np.zeros((5, 5), dtype=bool)
>>> x[1:, 2] = True
>>> x[0, 1] = True
>>> x
array([[False, True, False, False, False],
[False, False, True, False, False],
[False, False, True, False, False],
[False, False, True, False, False],
[False, False, True, False, False]], dtype=bool)
その後で、私は単に挿入するインデックスとして特定の列を指定することができないことを意味:
>>> np.insert(y, 2, [99, 99, 99, 99, 99], axis=1)
array([[ 0, 1, 99, 2, 3, 4],
[ 5, 6, 99, 7, 8, 9],
[10, 11, 99, 12, 13, 14],
[15, 16, 99, 17, 18, 19],
[20, 21, 99, 22, 23, 24]])
が所望の出力は次のようになります。
array([[ 0, 99, 1, 2, 3, 4],
[ 5, 6, 99, 7, 8, 9],
[10, 11, 99, 12, 13, 14],
[15, 16, 99, 17, 18, 19],
[20, 21, 99, 22, 23, 24]])
どれを例えば助けが大いに評価されるだろう!
したがって、マスクには行ごとに真の値が1つだけありますか? – Divakar
正しい。行ごとに1つのTrue値しか存在しません。難しい部分は、他のTrue値とは異なる列にある可能性があることです。 – SortingHat