簡體   English   中英

使用numpy將基於二維數組的列拆分為python中的兩個二維數組

[英]split 2-d array based columns to two 2-d array in python by using numpy

我有一個 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']]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM