为了账号安全,请及时绑定邮箱和手机立即绑定

使用numpy将基于二维数组的列拆分为python中的两个二维数组

使用numpy将基于二维数组的列拆分为python中的两个二维数组

郎朗坤 2022-05-19 16:15:21
我有一个由 19 行和 1280 列组成的二维数组。我想将它分成 2 个数组,由 19 行组成,70% 的列用于训练,30% 的列用于测试。这些列是随机选择的。我的代码在 python 中.请帮助我。谢谢
查看完整描述

1 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

编辑为包括随机洗牌


您可以使用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']]


查看完整回答
反对 回复 2022-05-19
  • 1 回答
  • 0 关注
  • 333 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号