python - 使用numpy将基于二维数组的列拆分为python中的两个二维数组
问题描述
我有一个 19 行和 1280 列的二维数组。我想将它分成 2 个数组,每行 19 行,70% 的列用于训练,30% 的列用于测试。这些列随机选择。我的代码在 python 中.请帮助我。谢谢
解决方案
编辑为包括随机洗牌
您可以使用slicing
将数组切片为所需的形状并numpy.random.shuffle()
获得随机数组索引。
import numpy as np
from copy import deepcopy
# create example data
num_cols, num_rows = 10, 3
arr = np.array([[f'{row}_{col}' for col in range(num_cols)] for row in range(num_rows)])
# create a list of random indices
random_cols = list(range(arr.shape[1]))
np.random.shuffle(random_cols)
# calculate truncation index as 70% of total number of columns
truncation_index = int(arr.shape[1] * 0.7)
# use arrray slicing to extract two sub_arrays
train_array = arr[:, random_cols[:truncation_index]]
test_array = arr[:, random_cols[truncation_index:]]
print(f'arr: \n{arr} \n')
print(f'train array: \n{train_array} \n')
print(f'test array: \n{test_array} \n')
带输出
arr:
[['0_0' '0_1' '0_2' '0_3' '0_4' '0_5' '0_6' '0_7' '0_8' '0_9']
['1_0' '1_1' '1_2' '1_3' '1_4' '1_5' '1_6' '1_7' '1_8' '1_9']
['2_0' '2_1' '2_2' '2_3' '2_4' '2_5' '2_6' '2_7' '2_8' '2_9']]
train array:
[['0_5' '0_8' '0_0' '0_7' '0_6' '0_1' '0_4']
['1_5' '1_8' '1_0' '1_7' '1_6' '1_1' '1_4']
['2_5' '2_8' '2_0' '2_7' '2_6' '2_1' '2_4']]
test array:
[['0_3' '0_9' '0_2']
['1_3' '1_9' '1_2']
['2_3' '2_9' '2_2']]
推荐阅读
- r - R:如何计算 EWMA 相关性
- c# - 如何在角色的移动方向上面对角色,同时使其与任何表面对齐?
- node.js - Nodejs上传大文件
- javascript - 反应:无法读取未定义的属性变量
- javascript - 如何覆盖NodeJS文件中的特定位置?
- rabbitmq - 在 Windows 上安装后无法启动 rabbitmq-server
- unity3d - 如何将我的游戏导出到我的自定义比率?
- python-3.x - 在 Google Colab 中找不到文件位置
- oracle - 使用条件控制器 sqlldr 从多行加载数据
- vb.net - vb.net 如何克隆列表视图项并添加带时间戳的行