Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对非整数2D numpy数组排序_Python_Sorting_Numpy - Fatal编程技术网

Python 对非整数2D numpy数组排序

Python 对非整数2D numpy数组排序,python,sorting,numpy,Python,Sorting,Numpy,如何对x和y坐标为非整数且近似值的二维数组进行排序?例如,这样的数组: [ [0.005, 0.02] [-0.1, 1.001] [0.99, 0.004] [1.1, 0.995] ] 请记住,对应于[0,0]的x,y坐标的[0.005,0.02]不一定具有最低的x坐标或最低的y坐标。我已经看到了如何处理整数,但我不确定这种情况。正如斯文指出的,您需要一个比较。如果按距离排序,则至少需要计算平方。您可以使用以下选项: x = np.array([[1,2],[0.1,0.2],[-1,0.

如何对x和y坐标为非整数且近似值的二维数组进行排序?例如,这样的数组:

[
[0.005, 0.02]
[-0.1, 1.001]
[0.99, 0.004]
[1.1, 0.995]
]

请记住,对应于[0,0]的x,y坐标的[0.005,0.02]不一定具有最低的x坐标或最低的y坐标。我已经看到了如何处理整数,但我不确定这种情况。

正如斯文指出的,您需要一个比较。如果按距离排序,则至少需要计算平方。您可以使用以下选项:

x = np.array([[1,2],[0.1,0.2],[-1,0.5], [2,2], [0,0]])
x[np.multiply(x,x).sum(axis=1).argsort()]
如果要按x或y排序,可以在切片上使用argsort:

x[x[:,0].argsort()] # sort by x
x[x[:,1].argsort()] # sort by y
您有一个(N,2)浮点数数组。我制作了一个类似于您的虚拟阵列:

>>import numpy as np
>>A = np.random.random((5,2))*3 - 1 
>>A

array([[-0.09759485,  1.09646624],
       [ 1.24045241,  0.59099876],
       [-0.43080349, -0.33879412],
       [ 0.82403019,  0.16274243],
       [ 1.95623418, -0.64082276]])
根据你所说的,这些值是近似值。在对它们排序之前,我们可以将它们四舍五入到最接近的整数

>>A = np.round(A)
>>A
array([[-0.,  1.],
       [ 1.,  1.],
       [-0., -0.],
       [ 1.,  0.],
       [ 2., -1.]])
现在,
numpy.sort()
应该按照您想要的顺序提供数组:

>>np.sort(A, axis=0)
>>A
array([[-0., -1.],
       [-0., -0.],
       [ 1.,  0.],
       [ 1.,  1.],
       [ 2.,  1.]])

所谓排序,我指的是根据两个轴进行排序。为了进行排序,您必须定义一个比较标准,例如
X_1=(X_11,X_12)
,例如如果
X_11
或如果
X|124; 1241
。。。一般来说,内置函数
sorted
会对任何iterable参数执行我示例的第一个变体。我可能可以自己编写一些操作,比如查看平方距离(x^2+y^2)并从那里继续,但我更关注的是是否有一种简单的方法可以执行此操作this@Tammy,你能给我们展示一下你在问题中对NumPy数组排序时想要的输出吗?或者你可以做
np.array(排序([list(a)for a in a])
如果
a
是cordinate的向量。我想四舍五入是最好的方法,你只需要知道最大误差