Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menggunakan Fungsi dengan Cekap pada Tatasusunan NumPy?

Bagaimanakah Saya Boleh Menggunakan Fungsi dengan Cekap pada Tatasusunan NumPy?

Barbara Streisand
Barbara Streisandasal
2024-12-18 04:42:16934semak imbas

How Can I Efficiently Apply Functions to NumPy Arrays?

Fungsi Penvektoran untuk Tatasusunan Numpy

Untuk memetakan fungsi dengan cekap pada tatasusunan numpy, anda boleh memanfaatkan kuasa pemvektoran, yang membolehkan anda untuk melaksanakan operasi mengikut elemen pada tatasusunan. Ini adalah lebih pantas daripada menggunakan pendekatan berasaskan gelung seperti pemahaman senarai.

Fungsi Asli NumPy

Jika fungsi yang anda ingin petakan sudah divektorkan sebagai fungsi NumPy, seperti np.square() untuk elemen kuasa dua, sangat disyorkan untuk menggunakannya. Ia akan menjadi jauh lebih pantas berbanding kaedah lain.

Vectorization dengan NumPy's vectorize

NumPy menyediakan fungsi vectorize untuk fungsi vectorizing. Ia membungkus fungsi anda untuk mendayakan operasi mengikut elemen pada tatasusunan:

import numpy as np

def f(x):
    return x ** 2

vf = np.vectorize(f)
x = np.array([1, 2, 3, 4, 5])
squares = vf(x)

Alternatif lain ialah menggunakan vektorize tanpa memulakan pembalut fungsi:

squares = np.vectorize(f)(x)

Kaedah Vektorisasi Lain

Kaedah lain untuk vektorisasi sertakan:

  • np.fromiter(): Mengulangi penjana dan membina tatasusunan.
  • np.array(list(map(f, x))): Menggunakan peta berfungsi untuk menggunakan fungsi pada setiap elemen dan kemudian menukar kepada tatasusunan.

Prestasi Pertimbangan

Walaupun semua kaedah ini boleh menvektorkan fungsi, prestasinya mungkin berbeza-beza. Penanda aras telah menunjukkan bahawa menggunakan fungsi asli NumPy adalah yang paling pantas jika ia tersedia. Untuk kes lain, vectorize dan fromiter biasanya berprestasi lebih baik daripada np.array(list(map(f, x))).

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Fungsi dengan Cekap pada Tatasusunan NumPy?. 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