繁体   English   中英

按字段numpy数组排序

[英]sorting by field numpy array

我写了这段代码:

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 数组进行排序。 使用 numpy 数组的 sort 函数很容易做到这一点。 无论如何,我遇到了一种我无法理解的奇怪行为。 如果我做这样的事情:

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

一切正常。 但是如果我改变函数内部的返回值

return strs.sort(order='nstr')

返回值是 None ......有人可以向我解释为什么会发生这种情况吗? 我没有任何解释

你调用的函数实际上是numpy.ndarray.sort ,它会改变 ndarray 本身但返回 None。 在此处查看更多详细信息
你要调用的函数应该是numpy.sort ,看这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM