は、ソートされた配列Aと私はそれが検索手段Pythonは、マトリクス状に配列のインデックスを検索し
results = np.array([[0, 2, 1, 4],
[1, 2, 3, 5],
[1, 2, 3, 4]]
)
ような結果を得ることができる
a = np.array([11,30,60,70])
b = np.array([[11, 2, 30, 4],
[30, 60, 70, 5],
[1, 2, 3, 4]]
)
行列Bがあると異なる値を与えます配列aの各要素を行列bに置き、配列aを配列aのインデックスに置き換えます。
私はそれが少し複雑である知っている、私は私の質問はループせずにそれを行うための任意のチャンスがある
def set_values_found_to_index(matrix_original, values_to_find):
"""Set value found to index."""
for index, elem in enumerate(values_to_find):
matrix_original[np.where(
values_to_find == values_to_find[index]
)] = index
return matrix_original
ループでそれを行っていますか?
更新:リンゴと梨のミックスについて曖昧な質問がまだあるので、@NilsWernerコードは、上記の質問に関しては完璧に動作しますので、私は質問更新:
a = np.array([11,30,60,70])
b = np.array(
[[11, 2, 30],
[30, 60, 70],
[20, 30, 50],
[11, 30, 60],
[30, 11, 70],
[70, 11, 60],
[1, 2, 3]]
)
results = np.array(
[[1,2,3],
[0,1,2],
[1,0,3],
[3,0,2]]
)
これは、上記に基づく手段をリンゴとナシのミックスの問題は、a.maxより大きいa.min()よりも大きいa.max()よりも大きい要素を含む行を削除することで解決できます。
関連:[numpyの配列の値の高速交換](https://stackoverflow.com/q/3403973/ 846892) –
'results'では、要素を見つけたらインデックスを置きます。それ以外の場合は、値を行列に保持します。あなたはリンゴと梨を混ぜています! 2の位置(0,1)は行列の元の値であり、2の(2)の2は配列の要素70のインデックスである。これがあなたが望むものだと確信していますか? –
@SembeiNorimakiそれは私が欲しいものですが、私は質問にバグがあることに気付きました。キューに感謝します。ちょうどそれを修正した。 – user3922048