Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Petua dan petua untuk melihat versi numpy

Petua dan petua untuk melihat versi numpy

王林
王林asal
2024-01-19 10:53:051207semak imbas

Petua dan petua untuk melihat versi numpy

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.

  1. Gunakan atribut numpy.version

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
  1. Gunakan atribut numpy.__version__

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
  1. Gunakan fungsi numpy.show_config

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!

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