【问题标题】:transpose data set followed by sorting. Then, create new data set [duplicate]转置数据集,然后排序。然后,创建新的数据集[重复]
【发布时间】:2018-02-27 22:54:58
【问题描述】:

我们拥有的数据集在这里。

a=np.array([2,6,9,5])
b =np.array([0.5,3,1,4])

我正在寻找的是(按 a 排序的数据点)

a=np.array([2,5,6,9])
b =np.array([0.5,4,3,1])

我一直在尝试的代码给了我一个错误

如果你能教我这个错误,那将是非常可观的。我搜索了这个的答案,但我找不到。非常感谢您。

import numpy as np
a=np.array([2,6,9,5])
b =np.array([0.5,3,1,4])

#transpose data points
datatemp = np.array([a, b]).T

data=sorted(datatemp, key=itemgetter(0))

a=data[:,0]
b=data[:,1]
print(a)
print(b)

【问题讨论】:

    标签: python list numpy


    【解决方案1】:

    您实际上不需要做任何这些疯狂的转置工作。函数np.argsort() 就是为这类东西设计的。

    a = np.array([2,6,9,5])
    b = np.array([0.5,3,1,4])
    arg_order = np.argsort(a)
    
    a = a[arg_order]
    b = b[arg_order]
    
    print(a)
    print(b)
    #: array([2, 5, 6, 9])
    #: array([ 0.5,  4. ,  3. ,  1. ])
    

    如果您查看arg_order 的值,它只是一个数组,其中包含要按正确顺序检索的索引。

    print(arg_order)
    #: array([0, 3, 1, 2])
    

    Numpy 数组可以将数组作为索引参数,用于描述检索哪些元素的顺序。(给我一个新数组,其中包含 0th,然后是 3rd,然后是 1st,然后是 2nd 元素按此顺序)。

    【讨论】:

    • 这正是我想要的。在我的代码中效果很好。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 2021-06-27
    • 2011-02-22
    相关资源
    最近更新 更多