python - 将数据集拆分为两个非冗余的 numpy 数组?

标签 python numpy

我有一个 numpy 数组“my_data”。我正在尝试随机拆分此数据集。但是,当我使用以下代码执行此操作时,我得到一个“train”数组和一个“test”数组。训练数组和测试数组在列中有一些行。

training_idx = np.random.randint(my_data.shape[0], size=split_size)
test_idx = np.random.randint(my_data.shape[0], size=len(my_data)-split_size)
train, test = my_data[training_idx,:], my_data[test_idx,:]

我的目的是首先随机找到训练数组,然后将 my_data 中不在训练数组中的任何行作为测试数组的一部分。

在 numpy 中有没有办法做到这一点? (我避免使用 sklearn 来拆分我的数据)

我在此处引用这篇文章以获取我的数据集。 How to split/partition a dataset into training and test datasets for, e.g., cross validation?

如果我按照这篇文章的逻辑进行编码,我最终会得到训练和测试数据集,其中训练和测试中有一些冗余行。我打算制作不常见行的训练和测试数据集。

最佳答案

正在关注 this answer你可以这样做:

train_idx = np.random.randint(my_data.shape[0], size=split_size)    
mask = np.ones_like(my_data, dtype=bool)
mask[train_idx] = False
train, test = my_data[~mask], my_data[mask]

不过,正如 Poojan 所建议的,更自然的方法是对数据进行切片排列。

permuted = np.random.permutation(my_data)
train, test = permuted[:split_size], permuted[split_size:]

关于python - 将数据集拆分为两个非冗余的 numpy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54564784/

相关文章:

javascript - 从 JavaScript 中查找 id 的正则表达式

python - 如何将 numpy 矩阵边界设置为零?

python - 使用 OpenCV 进行视频处理

python - 列出当前 Python 解释器中所有已知的 NumPy 数组

python - 如何生成等距插值

python - 遍历数组并对元素进行计算

python-3.x - 查找两列 df 之间存在的任何元素

Python - 如何摆脱 sql 查询执行中的转义序列

python - 在python中比较 `float`和 `float64`

python - 使用 Fabric/Paramiko 遍历 SOCKS5 代理时无输出