Исправить широковещательный входной массив из формы, Заменить на ноль - PullRequest
0 голосов
/ 16 февраля 2019

Здесь я генерирую массив в виде txt файла, я хочу, если нет данных, то он автоматически заменяется на ноль, как мне это сделать?

Объясните алгоритм моего кода:

Мото кода: Мой код извлекает значение из определенной папки, каждая папка содержит 7 файлов 'txt', которые генерируются одним пользователем, таким образом, несколькоПапка содержит несколько данных нескольких пользователей.

step1: Запустите 1-й цикл for и управляйте им, используя количество папок в определенной папке, а в переменной 'path' сохраняйте первый путь первой папки.

step2: Открыть путь и получить данные 7-текстового файла, используя 2nd для loop.after feats, закрыть 2-й для loop и выполнить остальной код.

step3: Конкатировать данные 7 txt-файлав одном 1d-массиве.

step4: создать 2d-массив, используя получение данных из 2 папок

step5: создать строку в 2d-массиве и вставить 1d-массив

import numpy as np
    import os
    import shutil
    #variable that contain inicial path as string
    f_path='Result'

    #for control incriment row index of array with loop
    array_control_var=1


    #create a rarry for storing data of one user, By deufault value zero             
    main_f_array=np.zeros((1,123),int)

    #first row of the array(main_f_array[0]) is label of each question
    main_f_array[0] = np.array([21,22,23,241,242,243,244,245,246,247,248,249,2410,2411,251,252,253,254,255,256,257,
                                258,259,2510,2511,2512,2513,2514,2515,2516,2517,261,262,263,264,265,266,267,
                                268,269,2610,2611,2612,2613,2614,2615,2616,2617,31,32,33,34,35,36,37,38,39,
                                310,311,312,313,314,315,316,317,41,42,43,44,45,46,51,52,53,54,55,56,57,58,59,61,
                                62,63,64,65,66,67,68,69,610,611,612,613,614,615,616,617,618,619,620,621,71,72,
                                73,74,75,76,77,78,79,710,711,712,713,714,715,716,717,718,719,720,721,722])

    #for feacth directory path
    for (path,dirs,file) in os.walk(f_path):
        if(path==f_path):
            continue

        #for count how many file exiest
        file_c=0

        #counting how many file exiext
        file_c += len(file)

        if file_c!=7:

            #if there is not 7 file exiest then delete
            shutil.rmtree(path)
            continue


        f_path_1= path +'\page_1.txt'

        #Get data from page1 indivisualy beacuse there string type data exiest
        pgno_1 = np.array(np.loadtxt(f_path_1, dtype='U', delimiter=','))

        #only for page_2.txt
        f_path_2= path +'\page_2.txt'
        with open(f_path_2) as f:
            str_arr = ','.join([l.strip() for l in f])
        pgno_2 = np.asarray(str_arr.split(','), dtype=int)

        #using loop feach data from those text file data type = int
        for j in range(3,8):

            #store file path using variable
            txt_file_path=path+'\page_'+str(j)+'.txt'


            #genarate a variable name that auto incriment with for loop
            foo='pgno_'+str(j)

            #pass the variable name as string and store value
            exec(foo + " = np.array(np.loadtxt(txt_file_path, dtype='i', delimiter=','))")

        #end for loop

        #marge all array from page 2 to rest in single array in one dimensation
        f_array=np.concatenate((pgno_2,pgno_3,pgno_4,pgno_5,pgno_6,pgno_7), axis=0)

        #assing 1d array(f_array) in row of main_f_array, rwo inciment by array_control_var variable 
        main_f_array=np.insert(main_f_array, array_control_var, f_array, 0)

        array_control_var+=1

        #end for loop

    print(main_f_array)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...