对numpy数组进行排序np.词法排序包含浮点值

2024-04-25 19:51:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个程序,根据特定公司的能量值对氨基酸的名称进行排序。在

我已经将相关数据提取到下面的numpy数组中。在

我试过了

In[37]: Data = np.array([
 ['ASN 205', -9.64164],
 ['LEU 206', -8.985774],
 ['ASN 207', -7.314434],
 ['PRO 208', -4.105338],
 ['ASN 209', -2.092342],
 ['GLY 210', -2.101412],
 ['LYS 211', -2.483852],
 ['ARG 212', -24.20364],
 ['SER 213', -1.181002],
 ['VAL 214', 0.057618]])
In[38]: ind3 = np.lexsort((Data[:,0],Data[:,1]))
In[39]: Result = Data[ind3]
In[40]: Result
Out[40]: 
array([['SER 213', '-1.181002'],
       ['ASN 209', '-2.092342'],
       ['GLY 210', '-2.101412'],
       ['LYS 211', '-2.483852'],
       ['ARG 212', '-24.20364'],
       ['PRO 208', '-4.105338'],
       ['ASN 207', '-7.314434'],
       ['LEU 206', '-8.985774'],
       ['ASN 205', '-9.64164'],
       ['VAL 214', '0.057618']], 
      dtype='|S9')

但是这里的问题是浮点值是以字典方式排列的。我要按他们的价值来订购,意思是先-24.20364,然后…-2.483852。在

我该怎么做?在


Tags: in程序datanpargvalresultarray
1条回答
网友
1楼 · 发布于 2024-04-25 19:51:39

说明:np.array将所有传递的参数转换为适合所有参数的最大类型,也就是说,您的浮点在第1行中被转换。 您可以使用具有特定数据类型的元组,如下所示:

Data = np.array([
 ('ASN 205', -9.64164),
 ('LEU 206', -8.985774),
 ('ASN 207', -7.314434),
 ('PRO 208', -4.105338),
 ('ASN 209', -2.092342),
 ('GLY 210', -2.101412),
 ('LYS 211', -2.483852),
 ('ARG 212', -24.20364),
 ('SER 213', -1.181002),
 ('VAL 214', 0.057618)], dtype=[('f', '|S9'), ('g', float)])
ind3 = np.lexsort((Data['f'], Data['g']))
Result = Data[ind3]Out[8]:

输出:

^{pr2}$

相关问题 更多 >