Python 以相同顺序随机洗牌不同文件中的数据和标签

Python 以相同顺序随机洗牌不同文件中的数据和标签,python,numpy,random,shuffle,Python,Numpy,Random,Shuffle,我有两个numpy数组,第一个包含数据,第二个包含标签。 我想把数据和标签混在一起。换句话说,我怎样才能以相同的顺序洗牌我的标签和数据 import numpy as np data=np.genfromtxt("dataset.csv", delimiter=',') classes=np.genfromtxt("labels.csv",dtype=np.str , delimiter='\t') x=np.random.shuffle(data) y=x[classes] 这是否保留了无

我有两个numpy数组,第一个包含数据,第二个包含标签。 我想把数据和标签混在一起。换句话说,我怎样才能以相同的顺序洗牌我的标签和数据

import numpy as np
data=np.genfromtxt("dataset.csv", delimiter=',')
classes=np.genfromtxt("labels.csv",dtype=np.str , delimiter='\t')

x=np.random.shuffle(data)
y=x[classes]

这是否保留了无序排列的顺序?

使用这些元素生成元素的随机顺序,并简单地索引到数组
数据
-

idx = np.random.permutation(len(data))
x,y = data[idx], classes[idx]

或者,您可以将数据和标签连接在一起,将它们洗牌,然后将它们分离为输入x标签y,如下所示:

def read_data(filename, delimiter, datatype): # Read data from a file
    return = np.genfromtxt(filename, delimiter, dtype= datatype)

classes = read_data('labels.csv', dtype= np.str , delimiter='\t')
data = read_data('data.csv', delimiter=',')
dataset = np.r_['1', data, classes] # Concatenate along second axis

def dataset_shuffle(dataset): # Returns separated shuffled data and classes from dataset 
    np.random.shuffle(dataset)
    n, m = dataset.shape
    x = data[:, 0:m-1]
    y = data[:, m-1]
    return x, y # Return shuffled x and y with preserved order

data.shape is(22403072)和classes.shape(2240,)您可以将数据和类标签组合在一起,洗牌[顺序保留],然后将它们作为输入x和标签y分开。