Rumah > pembangunan bahagian belakang > Tutorial Python > Apakah Cara Paling Cekap untuk Memetakan Fungsi ke atas Tatasusunan NumPy?

Apakah Cara Paling Cekap untuk Memetakan Fungsi ke atas Tatasusunan NumPy?

Barbara Streisand
Lepaskan: 2025-01-04 03:50:39
asal
422 orang telah melayarinya

What's the Most Efficient Way to Map Functions Over a NumPy Array?

Strategi Pemetaan Array Numpy yang Cekap

Apabila ia berkaitan dengan fungsi pemetaan ke atas tatasusunan Numpy, kecekapan prestasi adalah penting. Satu persoalan asas timbul: "Apakah pendekatan yang paling cekap untuk operasi pemetaan?"

Pendekatan Tidak Cekap: Pemahaman Senarai Python

Contoh yang disediakan dalam soalan menggunakan senarai kefahaman:

squares = np.array([squarer(xi) for xi in x])
Salin selepas log masuk

Walaupun pendekatan ini berkesan, pendekatan ini mempunyai ketidakcekapan yang wujud akibat penukaran perantaraan daripada senarai Python kembali kepada tatasusunan Numpy.

Strategi Dioptimumkan

Menguji pelbagai kaedah, penyelesaian optimum muncul:

1. Gunakan Fungsi Numpy Terbina Dalam:

Jika fungsi yang anda petakan sudah divektorkan dalam Numpy (cth., x^2), menggunakannya secara langsung menawarkan prestasi unggul:

squares = x ** 2
Salin selepas log masuk

2. Vektorisasi dengan numpy.vectorize:

Untuk fungsi tersuai, vektorisasi dengan numpy.vectorize menunjukkan peningkatan kelajuan yang ketara:

f = lambda x: x ** 2
vf = np.vectorize(f)
squares = vf(x)
Salin selepas log masuk

3. numpy.fromiter:

Pendekatan ini mencipta iterator daripada fungsi dan menggunakan numpy.fromiter untuk membina tatasusunan Numpy dengan cekap:

squares = np.fromiter((squarer(xi) for xi in x), x.dtype)
Salin selepas log masuk

4. numpy.array(list(map(...)):

Alternatif lain yang dioptimumkan ialah menggunakan peta dan kemudian menukarnya kepada tatasusunan Numpy:

squares = np.array(list(map(squarer, x)))
Salin selepas log masuk

Tanda aras dijalankan menggunakan perfplot menunjukkan bahawa kaedah yang dioptimumkan ini mengatasi pendekatan pemahaman senarai asal dengan margin yang ketara.

Atas ialah kandungan terperinci Apakah Cara Paling Cekap untuk Memetakan Fungsi ke atas Tatasusunan NumPy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan