我有一个用户定义的数字,我想将它与数据框的某一列进行比较。我想返回数据帧的行,其中包含(在df的某一列中,例如df.num)与给定数字x最接近的5个数字。任何关于没有循环的最佳方法的建议将不胜感激。 最佳答案 我认为您可以使用argsort方法:>>>df=pd.DataFrame({"A":1e4*np.arange(100),"num":np.random.random(100)})>>>x=0.75>>>df.ix[(df.num-x).abs().argsort()[:5]]Anum666600000.74826192920
我有一个数字数组,我想创建另一个数组来表示第一个数组中每个项目的排名。我正在使用Python和NumPy。例如:array=[4,2,7,1]ranks=[2,1,3,0]这是我想出的最佳方法:array=numpy.array([4,2,7,1])temp=array.argsort()ranks=numpy.arange(len(array))[temp.argsort()]有没有更好/更快的方法可以避免对数组进行两次排序? 最佳答案 两次使用argsort,先获取数组的顺序,再获取排名:array=numpy.array([4
我有一个数字数组,我想创建另一个数组来表示第一个数组中每个项目的排名。我正在使用Python和NumPy。例如:array=[4,2,7,1]ranks=[2,1,3,0]这是我想出的最佳方法:array=numpy.array([4,2,7,1])temp=array.argsort()ranks=numpy.arange(len(array))[temp.argsort()]有没有更好/更快的方法可以避免对数组进行两次排序? 最佳答案 两次使用argsort,先获取数组的顺序,再获取排名:array=numpy.array([4
我想知道在给定条件下对数组进行argsort的最有效方法是什么,同时保留原始索引importnumpyasnpx=np.array([0.63,0.5,0.7,0.65])np.argsort(x)#Correctedargsort(x)solutionOut[99]:array([1,0,3,2])我想在x>0.6的条件下对这个数组进行argsort。由于0.5x=np.array([0.63,0.5,0.7,0.65])index=x.argsort()list(filter(lambdai:x[i]>0.6,index))[0,3,2]这是低效的,因为它没有向量化。编辑:过滤器将
argsort()函数返回一个索引矩阵,可用于索引原始数组,以便结果与sort()结果匹配。有没有办法应用这些索引?我有两个数组,一个是用来获取排序顺序的数组,另一个是一些关联的数据。我想计算assoc_data[array1.argsort()]但这似乎不起作用。这是一个例子:z=array([1,2,3,4,5,6,7])z2=array([z,z*z-7])i=z2.argsort()z2=array([[1,2,3,4,5,6,7],[-6,-3,2,9,18,29,42]])i=array([[1,1,1,0,0,0,0],[0,0,0,1,1,1,1]])我想将i应用于z2
我知道类似这个问题的问题已经被问过很多次了,但是对类似问题的所有回答似乎只适用于二维数组。我对np.argsort()的理解是np.sort(array)==array[np.argsort(array)]应该是True。我发现如果np.ndim(array)==2这确实是正确的,但如果np.ndim(array)>2会给出不同的结果。例子:>>>array=np.array([[[0.81774634,0.62078744],[0.43912609,0.29718462]],[[0.1266578,0.82282054],[0.98180375,0.79134389]]])>>>np
假设您有一个numpy向量[0,3,1,1,1]并且您运行argsort你会得到[0,2,3,4,1]但所有的都是一样的!我想要的是一种洗牌相同值索引的有效方法。知道如何在没有while循环的情况下在排序向量上使用两个索引来做到这一点吗?numpy.array([0,3,1,1,1]).argsort() 最佳答案 使用词法排序:np.lexsort((b,a))表示按a排序,然后按b排序>>>aarray([0,3,1,1,1])>>>b=np.random.random(a.size)>>>barray([0.00673736,
如果我们有一个一维数组arr=np.random.randint(7,size=(5))#[31462]printnp.argsort(arr)#[14023]如果我们有一个二维数组arr=np.random.randint(7,size=(3,3))#[[524]#[333]#[612]]printnp.argsort(arr)#[[120]#[012]#[120]]我需要的是对整个矩阵进行排序的二维索引。像这样:#[[21]=>1#[01]=>2#[22]=>2#.#.#.#[02]=>4#[00]=>5#[20]]=>6如何获取二维数组排序的“二维索引”?
给定一个数组'a'我想按列对数组进行排序sort(a,axis=0)对数组做一些事情,然后撤消排序。我的意思不是重新排序,而是基本上颠倒每个元素的移动方式。我假设argsort()是我需要的,但我不清楚如何使用argsort()的结果对数组进行排序或更重要的是应用反向/反向argsort()这里有一点细节我有一个数组a,shape(a)=rXc我需要对每一列进行排序aargsort=a.argsort(axis=0)#MayusethislateraSort=a.sort(axis=0)现在平均每一行aSortRM=asort.mean(axis=1)现在用行平均值替换行中的每个列。还
这个问题在这里已经有了答案:HowtogetindicesofasortedarrayinPython(15个回答)关闭7年前.是否有Python的内置函数在python.array上执行什么argsort()numpy.array? 最佳答案 没有内置函数,但很容易从Python提供的出色工具中组装一个:defargsort(seq):#http://stackoverflow.com/questions/3071415/efficient-method-to-calculate-the-rank-vector-of-a-list