Nhảy chuyển tới nội dung

NumPy

本页使用了标题或全文手工转换
Duy cơ bách khoa, tự do bách khoa toàn thư
NumPy
Nguyên tác giảĐặc kéo duy tư · áo lợi phân đặc(Tiếng Anh:Travis Oliphant)
Khai phá giảXã đàn chuyên án
Lần đầu tuyên bốNumeric, 1995 năm(1995);
NumPy, 2006 năm(2006)
Trước mặt phiên bản2.1.1[1]在维基数据编辑( 2024 năm 9 nguyệt 3 ngày, 37 ngày trước )
Nguyên số hiệu kho編輯維基數據鏈接
Biên trình ngôn ngữPython,C ngôn ngữ
Thao tác hệ thốngVượt ngôi cao
Loại hìnhTrị số phân tích
Cho phép hiệp nghịBSD trao quyền điều khoản
Trang webwww.numpy.org

NumPyPython ngôn ngữMột cái mở rộng thể thức kho. Chi viện cao giai đại quy môNhiều duyHàng ngũCùngMa trậnGiải toán, ngoài ra cũng nhằm vào hàng ngũ giải toán cung cấp đại lượngToán họcHàm sốHàm thức kho.NumPy đời trướcNumericSớm nhất là từ Jim Hugunin cùng với nó hợp tác giả cộng đồng khai phá, 2005 năm, Travis Oliphant ở Numeric trung kết hợp một cái khác đồng tính chất thể thức kho Numarray đặc sắc, cũng gia nhập cái khác mở rộng công năng mà khai phá NumPy. NumPy vì mở ra nguyên thủy mã hơn nữa từ rất nhiều hợp tác giả cộng đồng giữ gìn khai phá.

Lịch sử

[Biên tập]

Matrix-sig

[Biên tập]

Cứ việc rất sớm liền đã chịu khoa học giới cùng công nghiệp giới chú ý, nhưng Python lúc ban đầu cũng không phải số lượng giá trị tính toán thiết kế. 1995 năm, đặc thù hứng thú tiểu tổ ( Special Interest Group, SIG ) Matrix-sig thành lập, này mục đích là thiết kế một số tổ tính toán bao. Matrix-sig thành viên trung có Python thiết kế giả cùng giữ gìn giảCát nhiều · phạm la tô mỗ,Hắn mở rộng Python ngữ pháp ( đặc biệt là hướng dẫn tra cứu ngữ pháp[2]), sử số tổ tính toán càng dễ dàng.[3]

Numeric

[Biên tập]

Ma trận bao Numeric từ Jim Fulton thực hiện, cũng từ Jim Hugunin mở rộng[3],( cũng xưng Numerical Python extensions hoặc NumPy).[4][5]Jim Hugunin làViện công nghệ MassachusettsNghiên cứu sinh,[5]:10Với 1997 năm gia nhậpQuốc gia nghiên cứu kế hoạch công ty(Tiếng Anh:Corporation_for_National_Research_Initiatives)LàmJPythonNghiên cứu phát minh[3],Lawrence lợi phất Moore quốc gia phòng thí nghiệmPaul Dubois tiếp nhận chức vụ giữ gìn giả.[5]:10Mặt khác lúc đầu cống hiến giả bao gồm David Ascher, Konrad Hinsen cùng Travis Oliphant.[5]:10

Numarray

[Biên tập]

Numarray là làm Numeric thay thế phẩm bị khai phá ra tới[6],Hiện đã vứt đi.[7][8]So với Numeric, Numarray xử lý toàn cục tổ tốc độ khá nhanh, nhưng mà xử lý số nhỏ tổ tốc độ so chậm,[9]Bởi vậy có một đoạn thời gian này hai cái bao bị song hành sử dụng với bất đồng tình huống. Numeric cuối cùng một cái phiên bản ( v24.2 ) với 2005 năm 11 nguyệt 11 ngày tuyên bố; Numarray cuối cùng một cái phiên bản ( v1.5.2 ) với 2006 năm 8 nguyệt 24 ngày tuyên bố.[10]

Có người hy vọng đem Numeric nạp vào Python tiêu chuẩn kho, nhưng cát nhiều · phạm la tô mỗ cho rằng, ở ngay lúc đó dưới tình huống, số hiệu khó có thể giữ gìn.[11]

2005 đầu năm, NumPy khai phá giả Travis Oliphant hy vọng xã khu bất đồng số tổ bao có thể thống nhất. Hắn đem Numarray công năng nhổ trồng đến Numeric thượng, cũng với 2006 đem kết quả làm NumPy 1.0 tuyên bố.[6]Cái này tân hạng mục làSciPyMột bộ phận. Vì tránh cho ở chỉ cần số tổ tính toán dưới tình huống trang bị khổng lồ SciPy bao, tân bao lấy NumPy danh nghĩa bị tách ra tới. 2011 năm, NumPy 1.5.0 phiên bản gia nhập đối Python 3 duy trì.[12]

2011 năm, PyPy bắt đầu khai phá NumPy API,[13]Nhưng nó chưa cùng NumPy hoàn toàn kiêm dung.[14]

Đặc sắc

[Biên tập]

NumPy tham khảoCPython( một cái sử dụngVị nguyên tổ mãDịch thẳng khí), mà ở cái này Python thật làm dịch thẳng khí thượng viết toán họcTính toán phápThể thức mã thông thường xa soBiên dịchQuá tương đồng thể thức mã muốn tới đến chậm. Vì giải quyết cái này nan đề, NumPy dẫn vào nhiều duy hàng ngũ cùng với có thể trực tiếp có hiệu suất mà thao tác nhiều duy hàng ngũHàm thứcCùng giải toán tử. Bởi vậy ở NumPy thượng chỉ cần có thể bị tỏ vẻ vì nhằm vào hàng ngũ hoặc Ma trận giải toán tính toán pháp, này chấp hành hiệu suất cơ hồ đều có thể cùng biên dịch quá chờ hiệuC ngôn ngữThể thức mã giống nhau mau[15].

NumPy cung cấp cùngMATLABTương tự công năng cùng thao tác phương thức, bởi vì hai người toàn vì dịch thẳng ngôn ngữ, hơn nữa đều có thể cho người sử dụng ở nhằm vào hàng ngũ hoặc Ma trận giải toán khi cung cấp soThuần lượngGiải toán càng mau hiệu năng. Hai người tương so dưới, MATLAB cung cấp đại lượng mở rộng thùng dụng cụ ( tỷ nhưSimulink); mà NumPy còn lại là căn cơ với Python cái này càng hiện đại, hoàn chỉnh hơn nữa mở ra nguyên thủy mã thể thức ngôn ngữ phía trên. Ngoài ra NumPy cũng có thể kết hợp cái khác Python mở rộng hàm thức kho. Tỷ nhưSciPy,Cái này hàm thức kho cung cấp càng nhiều cùng MATLAB tương tự công năng; cùng vớiMatplotlib,Đây là một cái cùng MATLAB nội kiến vẽ bản đồ công năng cùng loại hàm thức kho. Mà từ bản chất tới nói, NumPy cùng MATLAB đồng dạng là lợi dụngBLASCùngLAPACKTới cung cấp hiệu suất cao tuyến tính đại số giải toán.

ndarray số liệu kết cấu

[Biên tập]

NumPy trung tâm công năng là ndarray ( tứcn-dimensional array, nhiều duy hàng ngũ ) số liệu kết cấu. Đây là một cái tỏ vẻ nhiều duy độ, cùng chất hơn nữa cố định lớn nhỏ hàng ngũ đồ vật. Mà từ một cái cùng trận này liệt tương quan liên tư liệu hình thái đồ vật tới miêu tả này hàng ngũ nguyên tố tư liệu cách thức ( tỷ như này tự nguyên tổ trình tự, ở ký ức thể trung chiếm dụng tự nguyên tổ số lượng, số nguyên hoặc là phù điểm số từ từ ).

Cực hạn tính

[Biên tập]

Ở số tổ trung cắm vào hoặc thêm vào nguyên tố cũng không giống Python list giống nhau đơn giản.np.pad(...)Trên thực tế sáng lập tân có mục tiêu hình dạng cùng bỏ thêm vào giá trị số tổ, đem cấp định số tổ giá trị phục chế đến tân số tổ trung cũng phản hồi tân số tổ.np.concatenate([a1,a2])Cũng không có trực tiếp liên tiếp hai cái số tổ, mà là phản hồi tân số tổ, nên số tổ bỏ thêm vào hai cái nguyên số tổ giá trị. Dùngnp.reshape(...)Thay đổi số tổ duy độ chỉ có ở số tổ trung nguyên tố số lượng bất biến dưới tình huống mới có thể thực hiện. Tạo thành trở lên tình huống nguyên nhân là NumPy số tổ cần thiết chiếm dụng liên tục nội tồn không gian. Blaze bao nếm thử khắc phục cái này hạn chế.[16]

Chưa kinh vector hóa thuật toán thông thường vận hành thong thả, bởi vì chúng nó cần thiết dùng thuần Python phương pháp thực hiện; bởi vì yêu cầu sáng tạo cùng đưa vào chờ đại lâm thời số tổ, bộ phận thao tác vector hóa khả năng sẽ tăng trưởng nàyKhông gian phức tạp độ( tỷ như từ hằng số tăng trưởng đến tuyến tính ). Bộ phận tiểu tổ thông qua vận hành khi biên dịch ( Runtime compilation of numerical code ) tránh cho một vấn đề này. Nhưng cùng NumPy tổng thể khai nguyên giải quyết phương án bao gồm numexpr[17]CùngNumba[18].Cython cùng Pythran là trạng thái tĩnh biên dịch giải quyết phương án.

Rất nhiều hiện đại đại hình khoa học tính toán ứng dụng yêu cầu vượt qua NumPy số tổ năng lực. Tỷ như, NumPy số tổ thông thường thêm tái đến máy tính nội tồn trung, nhưng mà nội tồn khả năng không có đủ dung lượng; ngoài ra, NumPy chỉ ở đơn cáiCPUThượng tiến hành thao tác, mà rất nhiều tuyến tính đại số tính tử có thể thông qua CPU tụ quần cùng cái khác đặc thù phần cứng ( tỷ nhưGPU,TPU,Bộ phận chiều sâu học tập ứng dụng cũng ỷ lại với này đó đặc thù phần cứng ) tới gia tốc. Bởi vậy, sắp tới ở Python sinh thái trung xuất hiện rất nhiều cái khác công cụ, tỷ như dùng cho phân bố thức số tổDask(Tiếng Anh:Dask),Dùng cho GPU tính toánTensorFlowCùngJAXChờ. Này đó kho thông thường thực hiện hoặc bắt chước NumPy bộ phậnAPI,Bởi vậy người dùng không cần đại lượng cải biến liền có thể bố trí ban đầu sử dụng NumPy trình tự.[19]Sắp tới xuất hiện từ Nvidia CUDA giá cấu gia tốcCuPy(Tiếng Anh:CuPy)Kho[20]Triển lãm nhanh chóng tính toán tiềm lực, là NumPy trực tiếp thay thế phẩm.[21]

Ngữ pháp

[Biên tập]
Cách điểm
>>>importnumpyasnp
>>>x=np.array([1,2,3])
>>>x
array([1,2,3])
>>>y=np.arange(10)# cùng loại Python range, nhưng là hồi truyền array
>>>y
array([0,1,2,3,4,5,6,7,8,9])
Cơ bản giải toán
>>>a=np.array([1,2,3,6])
>>>b=np.linspace(0,2,4)# thành lập một cái array, ở 0 cùng 2 phạm vi chi gian làm 4 cái điểm 3 chia đều
>>>c=a-b
>>>c
array([1.,1.33333333,1.66666667,4.])
>>>a**2
array([1,4,9,36])
Toàn vực phương pháp
>>>a=np.linspace(-np.pi,np.pi,100)
>>>b=np.sin(a)
>>>c=np.cos(a)
Tuyến tính đại số
>>>fromnumpy.randomimportrand
>>>fromnumpy.linalgimportsolve,inv
>>>a=np.array([[1,2,3],[3,4,6.7],[5,9.0,5]])
>>>a.transpose()
array([[1.,3.,5.],
[2.,4.,9.],
[3.,6.7,5.]])
>>>inv(a)
array([[-2.27683616,0.96045198,0.07909605],
[1.04519774,-0.56497175,0.1299435],
[0.39548023,0.05649718,-0.11299435]])
>>>b=np.array([3,2,1])
>>>solve(a,b)# giải phương trình ax = b
array([-4.83050847,2.13559322,1.18644068])
>>>c=rand(3,3)# thành lập một cái 3x3 tùy cơ Ma trận
>>>c
array([[3.98732789,2.47702609,4.71167924],
[9.24410671,5.5240412,10.6468792],
[10.38136661,8.44968437,15.17639591]])
>>>np.dot(a,c)# Ma trận tương thừa
array([[53.61964114,38.8741616,71.53462537],
[118.4935668,86.14012835,158.40440712],
[155.04043289,104.3499231,195.26228855]])

Tham khảo tư liệu

[Biên tập]
  1. ^1.01.1Release 2.1.1.2024 năm 9 nguyệt 3 ngày[2024 năm 9 nguyệt 22 ngày ].
  2. ^Inde xing — NumPy v1.20 Manual.numpy.org.[2021-04-06].( nguyên thủy nội dungLưu trữVới 2023-06-12 ).
  3. ^3.03.13.2Millman, K. Jarrod; Aivazis, Michael.Python for Scientists and Engineers.Computing in Science and Engineering. 2011,13(2): 9–12[2014-07-07].Bibcode:2011CSE....13b...9M.doi:10.1109/MCSE.2011.36.(Nguyên thủy nội dungLưu trữ với 2019-02-19 ).
  4. ^Travis Oliphant.Python for Scientific Computing(PDF).Computing in Science and Engineering. 2007[2013-10-12].(Nguyên thủy nội dung(PDF)Lưu trữ với 2013-10-14 ).
  5. ^5.05.15.25.3David Ascher; Paul F. Dubois; Konrad Hinsen; Jim Hugunin; Travis Oliphant.Numerical Python(PDF).1999[2023-03-17].( nguyên thủy nội dungLưu trữ(PDF)Với 2023-03-17 ).
  6. ^6.06.1van der Walt, Stéfan; Colbert, S. Chris; Varoquaux, Gaël. The NumPy array: a structure for efficient numerical computation. Computing in Science and Engineering (IEEE). 2011,13(2): 22.Bibcode:2011CSE....13b..22V.S2CID 16907816.arXiv:1102.1523可免费查阅.doi:10.1109/MCSE.2011.37.
  7. ^Numarray Homepage.[2006-06-24].( nguyên thủy nội dungLưu trữVới 2021-06-09 ).
  8. ^Travis E. Oliphant.Guide to NumPy.7 December 2006[2 February2017].
  9. ^Travis Oliphant and other SciPy developers.[Numpy-discussion] Status of Numeric.[2 February2017].(Nguyên thủy nội dungLưu trữ với 2017-02-03 ).
  10. ^NumPy Sourceforge Files.[2008-03-24].( nguyên thủy nội dungLưu trữVới 2012-03-02 ).
  11. ^History_of_SciPy - SciPy wiki dump.scipy.github.io.[2023-03-17].( nguyên thủy nội dungLưu trữVới 2023-03-17 ).
  12. ^NumPy 1.5.0 Release Notes.[2011-04-29].( nguyên thủy nội dungLưu trữVới 2021-12-09 ).
  13. ^PyPy Status Blog: NumPy funding and status update.[2011-12-22].( nguyên thủy nội dungLưu trữVới 2023-03-25 ).
  14. ^NumPyPy Status.[2013-10-14].( nguyên thủy nội dungLưu trữVới 2013-10-16 ).
  15. ^SciPy PerformancePython.[2006-06-25].(Nguyên thủy nội dungLưu trữ với 2015-01-13 ).
  16. ^Blaze Ecosystem Docs.Read the Docs.[17 July2016].[Mất đi hiệu lực liên kết]
  17. ^Francesc Alted.numexpr.GitHub.[8 March2014].( nguyên thủy nội dungLưu trữVới 2023-03-24 ).
  18. ^Numba.[8 March2014].( nguyên thủy nội dungLưu trữVới 2023-06-01 ).
  19. ^Charles R Harris; K. Jarrod Millman; Stéfan J. van der Walt; et al.Array programming with NumPy(PDF).Tự nhiên. 2020-09-16,585(7825): 357–362.ISSN 1476-4687.PMC 7759461可免费查阅.PMID 32939066.arXiv:2006.10256可免费查阅.doi:10.1038/S41586-020-2649-2.WikidataQ99413970( tiếng Anh ).
  20. ^Shohei Hido - CuPy: A NumPy-compatible Library for GPU - PyCon 2018,[2021-05-11],( nguyên thủy nội dungLưu trữVới 2021-12-21 )( tiếng Anh )
  21. ^Entschev, Peter Andreas.Single-GPU CuPy Speedups.Medium. 2019-07-23[2021-05-11].( nguyên thủy nội dungLưu trữVới 2023-03-16 )( tiếng Anh ).

Mở rộng đọc

[Biên tập]

Phần ngoài liên kết

[Biên tập]