сортировка по полю - PullRequest
       3

сортировка по полю

0 голосов
/ 04 апреля 2019

Я написал этот код:

def readFile(filename):
    a = open(filename,'r')
    strs = np.array(0,dtype=[('nstr','d'),('test','f')])
    for i in a.readlines():
        if i[0] != '#':
            line = i.split()
            if len(line) > 0:
                tmp_strs = np.array(1,dtype=[('nstr','d'),('test','f')])
                tmp_strs['nstr'] = int(line[0])
                tmp_strs['test'] = float(line[1])
                strs = np.append(strs,tmp_strs)
    return strs

Теперь я бы хотел отсортировать этот массив с массивами по полю nstr.Это легко сделать с помощью функции сортировки массива numpy.Во всяком случае, я столкнулся со странным поведением, которое не могу понять.Если я сделаю что-то вроде:

test = readFile(filename)
test.sort(order='nstr')

все работает нормально.Но если я изменю возвращаемое значение внутри функции, например

return strs.sort(order='nstr')

Возвращаемое значение равно None ... может кто-нибудь объяснить мне, почему это происходит?У меня нет никаких объяснений

1 Ответ

0 голосов
/ 04 апреля 2019

Функция, которую вы вызываете, на самом деле numpy.ndarray.sort , она изменит сам ndarray , но вернет None. Подробнее здесь .
Функция, которую вы хотите вызвать, должна иметь вид numpy.sort , см. здесь .

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