Saya memiliki array 2D yang koordinat x y z.

array([[ 1. ,  1. ,  1. ],
       [ 2. ,  3. ,  1. ],
       [ 3. ,  4. ,  1. ],
       [ 3.1,  5.1,  1. ],
       [ 3.2,  5.2,  1. ],
       [ 3.4,  5.3,  1. ],
       [ 3.5,  5.4,  1. ],
       [ 3.7,  5.5,  1. ],
       [ 3.8,  5.6,  1. ],
       [ 3.9,  5.7,  1. ],
       [ 4. ,  5.8,  1. ],
       [ 4.1,  5.9,  1. ],
       [ 4.2,  6. ,  1. ],
       [ 5. ,  6.1,  1. ],
       [ 9. ,  6.2,  1. ],
       [10. , 10. ,  1. ]])

Saya ingin menghapus satu subarray sekaligus saat saya mengulang array 2D. Sehingga pada loop pertama subarray pertama akan dihapus dan array 2D akan menjadi

array([[ 2. ,  3. ,  1. ],
       [ 3. ,  4. ,  1. ],
       [ 3.1,  5.1,  1. ],
       [ 3.2,  5.2,  1. ],
       [ 3.4,  5.3,  1. ],
       [ 3.5,  5.4,  1. ],
       [ 3.7,  5.5,  1. ],
       [ 3.8,  5.6,  1. ],
       [ 3.9,  5.7,  1. ],
       [ 4. ,  5.8,  1. ],
       [ 4.1,  5.9,  1. ],
       [ 4.2,  6. ,  1. ],
       [ 5. ,  6.1,  1. ],
       [ 9. ,  6.2,  1. ],
       [10. , 10. ,  1. ]])

Pada loop kedua, subarray kedua akan dihapus dan array 2D akan menjadi

array([[ 1. ,  1. ,  1. ],
       [ 3. ,  4. ,  1. ],
       [ 3.1,  5.1,  1. ],
       [ 3.2,  5.2,  1. ],
       [ 3.4,  5.3,  1. ],
       [ 3.5,  5.4,  1. ],
       [ 3.7,  5.5,  1. ],
       [ 3.8,  5.6,  1. ],
       [ 3.9,  5.7,  1. ],
       [ 4. ,  5.8,  1. ],
       [ 4.1,  5.9,  1. ],
       [ 4.2,  6. ,  1. ],
       [ 5. ,  6.1,  1. ],
       [ 9. ,  6.2,  1. ],
       [10. , 10. ,  1. ]])

Dan seterusnya.

Saat ini yang saya miliki adalah sebagai berikut:

xline =[1, 2, 3, 3.1, 3.2, 3.4, 3.5, 3.7, 3.8, 3.9, 4, 4.1, 4.2, 5, 9, 10]
yline =[1, 3, 4, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6,5.7, 5.8, 5.9, 6, 6.1, 6.2, 10]
zline =[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

df = DataFrame(xline,columns=['x_value'])
df['y_value']=yline
df['z_value']=zline

points=df.values

for p1 in points:
    points2=points[:]
    points3=np.delete(points2, np.argwhere(points2 == p1))
    print(points3)

Tetapi kode saya tampaknya mengurangi array 2D menjadi array 1D. Adakah yang tahu cara memperbaikinya?

Terima kasih banyak atas dukungan dan bantuan Anda.

Hormat kami

Wilson

0
yihao ren 20 November 2020, 10:10

1 menjawab

Jawaban Terbaik

Ini dapat dilakukan dengan menggunakan pengindeksan daftar dan penggabungan. Saya akan menggunakan daftar (lebih pendek) yang berbeda di sini untuk menunjukkan karena jika tidak maka akan terlalu panjang.

Misalkan kita memiliki daftar

L = [1,2,3,4,5,6,7]

Dan kami ingin melakukan persis seperti yang Anda minta. Kemudian kita bisa melakukannya

for i in range(0, len(L)):
    new_L = L[0:i] + L[i+1:len(L)]
    print(new_L)    

Keluaran:

[2, 3, 4, 5, 6, 7]
[1, 3, 4, 5, 6, 7]
[1, 2, 4, 5, 6, 7]
[1, 2, 3, 5, 6, 7]
[1, 2, 3, 4, 6, 7]
[1, 2, 3, 4, 5, 7]
[1, 2, 3, 4, 5, 6]

Alih-alih menghapus dari daftar, Anda dapat membuat daftar baru tanpa elemen ke i. Kode yang sama juga harus berfungsi untuk array numpy.

Sidenote: Jika Anda hanya ingin membuat daftar koordinat mengingat xline, yline, dan zline, mungkin lebih mudah menggunakan pemahaman daftar Python:

coords = [[x,y,z] for x,y,z in zip(xline,yline,zline)]

Ini akan mengembalikan daftar dalam bentuk

coords =     [  [x1, y1, z1],
                [x2, y2, z2],
                [x3, y2, z3],
                    ...
   
              ]
1
Ziming Shan 20 November 2020, 08:08