Разделительный массив numpy - PullRequest
1 голос
/ 15 января 2020

Привет, я пытаюсь разделить массив numpy на 2 части, и это по всем oop, таким как:

main_array.shape = (50, 400, 400, 3)
for i = 0:
 sub_array_1 would be equal to (0:10, 400, 400, 3)
 sub_array_2 would be equal to (10:50, 400, 400, 3)
for i = 1:
 sub_array_1 would be equal to (10:20, 400, 400, 3)
 sub_array_2 would be equal to (20:50, 400, 400, 3)

etc...

как это сделать?

Я использую следующий фрагмент кода, но я получаю очень странные результаты:

i = 0
for k in range(1, k_fold+1):
        sub_array_1 = main_array[np.uint8(i):np.uint8(i+len(main_array)//5)]


        temp_0 = main_array[0:np.uint8(i)]
        temp_1 = main_array[np.uint8(i+len(main_array)//5):]
        sub_array_2 = np.concatenate((temp_0, temp_1), axis=0)

Используя это, я действительно получаю 2 массива, но со странной окончательной формой.

Я что-то здесь не так делаю (наверное, так)

1 Ответ

0 голосов
/ 15 января 2020

Попробуйте:

import numpy as np
main_array = np.random.rand(50, 400, 400, 3)
k_fold = 5
step = main_array.shape[0] / k_fold
for i in range(0,k_fold - 1):
    sub_array_1 = main_array[int(step * i):int(step * (i + 1))]
    sub_array_2 = main_array[int(step * (i + 1)):]
    print("sub_array_1: {} -> {}".format(int(step * i),int(step * (i + 1))))
    print(sub_array_1.shape, sub_array_2.shape)
    print()

Вывод:

sub_array_1: 0 -> 10
(10, 400, 400, 3) (40, 400, 400, 3)

sub_array_1: 10 -> 20
(10, 400, 400, 3) (30, 400, 400, 3)

sub_array_1: 20 -> 30
(10, 400, 400, 3) (20, 400, 400, 3)

sub_array_1: 30 -> 40
(10, 400, 400, 3) (10, 400, 400, 3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...