Вывод функции python не отсортирован - PullRequest
0 голосов
/ 24 мая 2018

Я определил функцию в Python, которая читает данные из несортированного текстового файла, сортирует содержимое по возрастанию.Затем я прошу функцию вернуть окончательную переменную.

Когда я вызываю функцию как часть другого скрипта, вывод функции находится в «несортированном» состоянии.

def read_file(my_file):
    import numpy as np
    initial_data =[]
    A = []
    B =  []
    C =  []
    D =  []
    with open(my_file) as f:
        for num, row in enumerate(f):
            initial_data.append(row[:])
            lines = row.strip()
            columns = lines.split()
            if num > 11:
                A.append(float(columns[0]))
                B.append(float(columns[1]))
                C.append(float(columns[2]))
                D.append(float(columns[4]))

    data = np.vstack((A,B, C,D)).T
    data= data[np.argsort(data[:,0])]

    return(data)

Когда я запускаю этот скрипт один, окончательный dataотсортировано по data[np.argsort(data[:,0])].

Но когда я это сделаю:

new_data = read_file(my_file)

new_data не отсортировано.

РЕДАКТИРОВАТЬ: Яиспользуя Python 3, my_file представляет собой простой текстовый файл (.txt)

1 Ответ

0 голосов
/ 24 мая 2018

На самом деле, я не знаю причину этого, но я сталкиваюсь с той же проблемой, и я знаю, как ее пройти.Я решаю проблему, заменяя «данные» в последней строке новым массивом numpy.Я имею в виду вместо этой строки

data= data[np.argsort(data[:,0])]

замените эти две строки кодом

data1 = np.zeros(data.shape)
data1 = data[np.argsort(data[:,0])]

и, наконец, верните данные1.

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