0
我需要同时在多个阵列上执行相同的shuffle。这些可能是大型数组(多个GB),因此需要在适当的位置完成。一个简单的例子:是否有可能在多个numpy阵列上执行相同的shuffle?
洗牌之前:
Arr1: [[1 2 3]
[4 5 6]]
Arr2: [0 1]
后洗牌:
Arr1: [[4 5 6]
[1 2 3]]
Arr2: [1 0]
我需要同时在多个阵列上执行相同的shuffle。这些可能是大型数组(多个GB),因此需要在适当的位置完成。一个简单的例子:是否有可能在多个numpy阵列上执行相同的shuffle?
洗牌之前:
Arr1: [[1 2 3]
[4 5 6]]
Arr2: [0 1]
后洗牌:
Arr1: [[4 5 6]
[1 2 3]]
Arr2: [1 0]
这里是我已经找到了最好的解决办法:
from numpy.random import RandomState
import sys
def shuffleDataAndLabelsInPlace (arr1, arr2):
seed = random.randint(0, sys.maxint)
prng = RandomState(seed)
prng.shuffle(arr1)
prng = RandomState(seed)
prng.shuffle(arr2)
# Example:
arr1= np.array([[1,2,3],[4,5,6]])
labels = np.array([0, 1])
print "Before shuffle"
print arr1
print arr2
print "After"
shuffleDataAndLabelsInPlace(arr1, arr2)
print arr1
print arr2
(提供相同的输出如原始问题)