私は2つのnumpy配列を持っています。私は、その行インデックスだけを同時にシャッフルしたいです。numpy配列の行インデックスのみをシャッフルする方法は?
a = np.arange(100).reshape(10,10)
b = np.arange(10).reshape(10,1)
p = np.random.permutation(a.shape[0])
a = a[p]
b = b[p]
print a
print b
私は2つのnumpy配列を持っています。私は、その行インデックスだけを同時にシャッフルしたいです。numpy配列の行インデックスのみをシャッフルする方法は?
a = np.arange(100).reshape(10,10)
b = np.arange(10).reshape(10,1)
p = np.random.permutation(a.shape[0])
a = a[p]
b = b[p]
print a
print b
bをシャッフルしない理由私はあなたがダウンして以下のようにすることができます何をしたいのか、シャッフルときそのように2つのnumpy
配列を結婚させて、それらを同じ順序にとどまらせることはできません。あなたができることは、別の配列に注文を保存し、それを使って注文を並べ替えることです。
a = np.arange(100).reshape(10,10)
b = np.arange(10).reshape(10,1)
i = np.random.shuffle(np.arange(a.size[0]))
print a[i]
print b[i]
あなたを:私は、彼らの行インデックスを揃えるが、それが自動的にそれは意味をなさない
a = np.arange(100).reshape(10,10)
b = np.arange(10).reshape(10,1)
a.shape[0]==b.shape[0]
np.random.shuffle(a)
print a
print b
import numpy as np
a = np.arange(100).reshape(10,10)
b = np.arange(10).reshape(10,1)
perm = np.random.permutation(a.shape[0])
print(a[perm, :])
print(b[perm, :])
numpy.random.shuffle
インプレース配列をソートしますが、私のコードの最後の2行で作成された配列a
とb
の唯一のいわゆるview
があります。後でa
とb
をチェックすると、それらは同じです。したがって、シャッフルされたバージョンを使用する場合は、a = a[perm, :]
またはc = (a[perm, :]).copy()
のようなものを使用する必要があります。
は 'a.shape [0] == b.shape [0]'役に立たない文ですか?ブール値の結果は失われただけですか?これはREPLセッションの結果ですか? –
何ですか?なぜあなたはシャッフルをシャッフルするのを期待していますか? – BrenBarn
'a.shape [0] == b.shape [0]'で暗示されている機能は(基本的に2つの配列が同じ順序になるように)結びつけるのはいいですが、numpy配列を作成し、実装するためには全く新しいクラスが必要です。 –