【问题标题】:Randomly shuffle data and labels from different files in the same order以相同的顺序随机打乱来自不同文件的数据和标签
【发布时间】:2017-04-05 10:50:29
【问题描述】:

我有两个 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]

这样做会保留洗牌的顺序吗?

【问题讨论】:

  • 您可以将数据和类标签组合在一起,将它们打乱[顺序保留],然后将它们分开作为输入x和标签y。

标签: python numpy random shuffle


【解决方案1】:

使用np.random.permutation 生成随机顺序的元素,并使用它们简单地索引到数组dataclasses -

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

【讨论】:

  • data.shape 是 (2240,3072) 和 classes.shape (2240,)
【解决方案2】:

或者,您可以将数据和标签连接在一起,将它们打乱,然后将它们分成 input xlabel 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

【讨论】:

    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 2018-03-22
    • 2019-12-05
    • 2019-01-02
    • 2014-04-08
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多