numpy ialah perpustakaan matematik yang sangat biasa digunakan dalam Python Ia digunakan secara meluas dalam bidang pengkomputeran saintifik dan menyokong sejumlah besar pengiraan berangka, algebra linear, penjanaan nombor rawak, transformasi Fourier dan fungsi lain. Apabila menggunakan numpy untuk pengiraan matematik, selalunya perlu untuk menentukan versi numpy dan ciri-cirinya, dan membuat pilihan pengoptimuman dan algoritma yang berbeza untuk versi numpy yang berbeza. Artikel ini akan memperkenalkan petua dan kiat untuk menyemak versi numpy, dan cara menggunakan numpy dengan lebih baik dengan mengesan maklumat versi numpy.
1. Cara menyemak versi numpy
Terdapat banyak fungsi dan atribut terbina dalam dalam numpy, yang boleh digunakan untuk mendapatkan maklumat versi numpy. Berikut akan memperkenalkan beberapa kaedah yang biasa digunakan untuk menyemak versi numpy.
Terdapat atribut versi dalam numpy, yang boleh digunakan untuk mendapatkan maklumat terperinci tentang versi numpy semasa, termasuk nombor versi, nilai cincang komit Git, maklumat pengkompil, dsb. Contoh kod adalah seperti berikut:
import numpy as np print(np.version.version)
Hasil output adalah seperti berikut:
1.20.1
Selain atribut versi, numpy juga menyediakan atribut __version__, yang nilai lalainya ialah semasa versi numpy Perwakilan rentetan. Atribut ini juga merupakan salah satu cara biasa untuk menentukan maklumat versi dalam numpy Contoh kod adalah seperti berikut:
import numpy as np print(np.__version__)
Hasil output adalah sama seperti contoh sebelumnya:
1.20.1
Jika anda perlu melihat numpy yang lebih terperinci Untuk maklumat penyusunan dan binaan, anda boleh menggunakan fungsi numpy.show_config. Fungsi ini akan memaparkan pelbagai penyusun, pemaut dan perpustakaan yang digunakan oleh numpy semasa membina, termasuk pengkompil C++, perpustakaan CBLAS, perpustakaan LAPACK, dsb. Contoh kodnya adalah seperti berikut:
import numpy as np np.show_config()
Hasil output adalah seperti berikut:
blas_mkl_info: libraries = ['mkl_rt'] library_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/lib/intel64'] define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] include_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/include'] blis_info: NOT AVAILABLE openblas_info: NOT AVAILABLE lapack_mkl_info: libraries = ['mkl_rt'] library_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/lib/intel64'] define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] include_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/include'] lapack_opt_info: libraries = ['mkl_rt'] library_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/lib/intel64'] define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] include_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/include'] lapack_info: libraries = ['mkl_rt'] library_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/lib/intel64'] define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] include_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/include'] mkl_info: libraries = ['mkl_rt'] library_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/lib/intel64'] define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] include_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/include'] blas_opt_info: libraries = ['mkl_rt'] library_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/lib/intel64'] define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)] include_dirs = ['C:/Program Files (x86)/Intel/oneAPI/mkl/2021.1.1/include'] ...(输出结果省略)
Melalui tiga kaedah di atas, anda boleh menyemak versi khusus dan maklumat kompilasi numpy, mengetahui versi numpy yang sepadan dengan projek yang berbeza, dan pilih Algoritma dan kaedah numpy yang sesuai adalah sangat penting.
2. Aplikasi maklumat versi numpy
Selepas menjelaskan maklumat versi numpy, apabila menggunakan numpy, anda boleh memilih algoritma dan kaedah yang sesuai untuk versi berbeza untuk mencapai kesan pengoptimuman terbaik dan peningkatan prestasi. Contohnya, dalam versi numpy 1.20 dan ke atas, fungsi peringkat lebih tinggi boleh digunakan untuk mengendalikan nilai NaN secara automatik untuk mengelakkan pengecualian semasa program dijalankan Pada masa yang sama, beberapa algoritma pengoptimuman yang cekap digunakan, dan prestasinya juga telah bertambah baik. Dalam versi numpy yang lebih rendah, anda mungkin perlu mengendalikan nilai dan pengecualian NaN secara manual, dan menggunakan beberapa algoritma mudah untuk meningkatkan kestabilan dan prestasi program.
Berikut ialah contoh mudah yang menunjukkan cara menggunakan maklumat versi numpy untuk memilih algoritma optimum.
Katakan kita perlu mengira hasil darab matriks 10000×10000 Kita boleh mengira tugasan ini dalam dua cara. Satu kaedah ialah menggunakan fungsi numpy.dot(), yang mengira hasil darab titik dua matriks dengan memanggil subrutin dgemm dalam pustaka BLAS Ia juga menyokong pengiraan berbilang benang dan vektorisasi, dan kelajuan pengiraan adalah sangat pantas. Kaedah lain ialah menggunakan fungsi numpy.multiply() untuk mendarab dua elemen matriks dengan unsur, dan kemudian menjumlahkan hasil untuk mendapatkan hasil darab titik Pelaksanaan kaedah ini agak mudah, tetapi prestasinya adalah lemah.
Kod berikut membandingkan masa pengiraan kedua-dua algoritma:
import numpy as np import time A = np.random.rand(10000, 10000) B = np.random.rand(10000, 10000) # 方法1:使用numpy.dot函数 start_time = time.time() C = np.dot(A, B) end_time = time.time() print("方法1计算时间:", end_time - start_time) # 方法2:使用numpy.multiply函数 start_time = time.time() C = np.multiply(A, B).sum() end_time = time.time() print("方法2计算时间:", end_time - start_time)
Hasil output adalah seperti berikut:
方法1计算时间: 3.94059681892395 方法2计算时间: 9.166156768798828
Seperti yang anda lihat, kelajuan pengiraan menggunakan numpy.dot() hampir 2.5 kali ganda daripada menggunakan numpy. multiply(), Ia boleh disimpulkan bahawa apabila versi numpy serasi, algoritma numpy.dot() harus diutamakan untuk mendapatkan prestasi yang lebih baik dan masa pengiraan yang lebih singkat.
Kesimpulan
Artikel ini memperkenalkan beberapa kaedah untuk melihat versi numpy, dan juga memperkenalkan aplikasi algoritma dan kaedah yang berbeza untuk versi numpy yang berbeza. Dalam pembangunan numpy sebenar, adalah sangat perlu untuk memahami ciri dan prestasi versi numpy dan menguasai kemahiran melihat versi numpy, yang boleh meletakkan asas yang kukuh untuk aplikasi dan pembangunan numpy yang lebih baik.
Atas ialah kandungan terperinci Petua dan petua untuk melihat versi numpy. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!