Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Fungsi Vektor NumPy Boleh Mewajarkan Tatasusunan NumPy dalam Pelbagai Arah dengan Cekap?

Bagaimanakah Fungsi Vektor NumPy Boleh Mewajarkan Tatasusunan NumPy dalam Pelbagai Arah dengan Cekap?

Linda Hamilton
Linda Hamiltonasal
2024-12-20 14:49:17706semak imbas

How Can a NumPy Vectorized Function Efficiently Justify a NumPy Array in Multiple Directions?

Mewajarkan Tatasusunan NumPy dengan Fungsi Vektor Umum

Pengenalan

Menjustifikasi tatasusunan NumPy merujuk kepada mengalihkan elemen bukan sifar ke satu sisi tatasusunan, menjadikannya lebih mudah untuk memanipulasi atau proses. Walaupun fungsi Python yang disediakan memfokuskan pada justifikasi kiri untuk matriks 2D, pendekatan yang lebih cekap dan komprehensif ialah menggunakan fungsi vektor NumPy.

Fungsi Vektor NumPy untuk Justifikasi Array

Fungsi berikut, justify, menyediakan cara umum untuk mewajarkan tatasusunan 2D untuk kedua-dua kiri dan kanan, serta atas dan bawah arah:

import numpy as np

def justify(a, invalid_val=0, axis=1, side='left'):    
    if invalid_val is np.nan:
        mask = ~np.isnan(a)
    else:
        mask = a!=invalid_val
    justified_mask = np.sort(mask,axis=axis)
    if (side=='up') | (side=='left'):
        justified_mask = np.flip(justified_mask,axis=axis)
    out = np.full(a.shape, invalid_val) 
    if axis==1:
        out[justified_mask] = a[mask]
    else:
        out.T[justified_mask.T] = a.T[mask.T]
    return out

Parameter:

  • a: Tatasusunan NumPy input untuk dibenarkan.
  • invalid_val: (Pilihan) The nilai tidak sah untuk mengisi tatasusunan yang dibenarkan. Lalai kepada 0.
  • paksi: Paksi sepanjang justifikasi akan dilakukan. 1 untuk baris, 0 untuk lajur.
  • sisi: Arah justifikasi. 'kiri', 'kanan', 'atas' atau 'bawah'.

Contoh Penggunaan:

  • Jusifikasi Kiri:
a = np.array([[1, 0, 2, 0],
               [3, 0, 4, 0],
               [5, 0, 6, 0],
               [0, 7, 0, 8]])

justified_array = justify(a, side='left')

print(justified_array)
# Output:
# [[1, 2, 0, 0],
#  [3, 4, 0, 0],
#  [5, 6, 0, 0],
#  [7, 8, 0, 0]]
  • Naik Justifikasi:
justified_array = justify(a, axis=0, side='up')

print(justified_array)
# Output:
# [[1, 7, 2, 8],
#  [3, 0, 4, 0],
#  [5, 0, 6, 0],
#  [6, 0, 0, 0]]

Faedah Fungsi NumPy:

  • Vectorized: Menggunakan operasi NumPy's vectorized untuk tinggi prestasi.
  • Umum: Menyokong justifikasi untuk keempat-empat arah.
  • Serasi dengan Bentuk Tatasusunan Sewenang-wenang: Mewajarkan tatasusunan mana-mana dimensi.
  • Nilai Tidak Sah Boleh Disesuaikan: Membolehkan menyatakan nilai isian untuk kedudukan tidak sah.
  • Menggabungkan Pengendalian Nilai Null: Secara automatik menutup nilai NaN (jika invalid_val ditetapkan kepada NaN).

Kesimpulan

Fungsi NumPy yang disediakan, justify, menawarkan cara yang teguh dan cekap untuk mewajarkan tatasusunan NumPy. Sifat umum dan pelaksanaan vektor menjadikannya alat serba boleh untuk tugasan manipulasi dan pemprosesan tatasusunan.

Atas ialah kandungan terperinci Bagaimanakah Fungsi Vektor NumPy Boleh Mewajarkan Tatasusunan NumPy dalam Pelbagai Arah dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn