两个numpy数组的随机但一致的排列

时间:2017-04-07 16:15:38

标签: python arrays numpy

目前即将面临关于2个不同行大小的numpy数组的排列问题,我知道如何利用np.random.shuffle函数,但我似乎无法找到解决我特定问题的方法,来自的例子来自numpy文档仅指具有相同行大小的nd数组,例如x.shape=[10][784] y.shape=[10][784]

对于具有这些形状的两个数组,我想以一致的顺序对列值进行置换/随机混洗:x.shape=[60000][784], y.shape=[10000][784]

e.g。
x[59000] = [0,1,2,3,4,5,6,7,8,9] y[9999] = [0,1,2,3,4,5,6,7,8,9]

排列后,两者都应以相同的一致方式进行洗牌,例如:

x[59000] = [3,0,1,6,7,2,9,8,4,5] y[9999] = [3,0,1,6,7,2,9,8,4,5]

shuffle顺序需要在具有不同行大小的两个数组上保持一致。我似乎得到了一个 ValueError:找到了包含不一致样本数的输入变量:[60000,10000]" 有关如何解决此问题的任何想法?非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

将阵列粘在一起并置换组合阵列:

merged = numpy.concatenate([x, y])
numpy.shuffle(merged.T)
x, y = numpy.split(merged, [x.shape[0]])

答案 1 :(得分:0)

检查旧线程 tf.NoGradient

或者提前计算排列

REGISTER_OP