簡體   English   中英

排序非整數2D numpy數組

[英]Sorting a non-integer 2D numpy array

如何將x和y坐標為非整數且近似的2d數組排序? 因此,例如這樣的數組:

[
[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坐標。 我已經看到了如何對整數進行操作,但是對於這種情況我不確定。

正如Sven指出的,您需要進行比較。 如果按距離排序,則至少需要計算平方。 您可以使用此:

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.]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM