Python máy tính khoa học là gì?

SciPy là một thư viện máy tính khoa học mã nguồn mở dành cho ngôn ngữ lập trình Python. Kể từ lần phát hành đầu tiên vào năm 2001, SciPy đã trở thành một tiêu chuẩn thực tế để tận dụng các thuật toán khoa học trong Python, với hơn 600 người đóng góp mã duy nhất, hàng nghìn gói phụ thuộc, hơn 100.000 kho lưu trữ phụ thuộc và hàng triệu lượt tải xuống mỗi năm. Trong công việc này, chúng tôi cung cấp tổng quan về các khả năng và thực tiễn phát triển của SciPy 1. 0 và nêu bật một số phát triển kỹ thuật gần đây

Chính

SciPy là một thư viện gồm các quy trình số cho ngôn ngữ lập trình Python cung cấp các khối xây dựng cơ bản để mô hình hóa và giải quyết các vấn đề khoa học. SciPy bao gồm các thuật toán để tối ưu hóa, tích hợp, nội suy, bài toán giá trị riêng, phương trình đại số, phương trình vi phân và nhiều loại bài toán khác; . SciPy được xây dựng trên NumPy1,2, cung cấp cấu trúc dữ liệu mảng và các quy trình số nhanh có liên quan, và chính SciPy là nền tảng để xây dựng các thư viện khoa học cấp cao hơn, bao gồm scikit-learn3 và scikit-image4. Các nhà khoa học, kỹ sư và những người khác trên khắp thế giới dựa vào SciPy. Ví dụ: các tập lệnh đã xuất bản5,6 được sử dụng trong phân tích sóng hấp dẫn7,8 nhập một số gói con của SciPy và dự án chụp ảnh lỗ đen M87 trích dẫn SciPy9

Gần đây, SciPy đã phát hành phiên bản 1. 0, một cột mốc theo truyền thống báo hiệu API của thư viện [giao diện lập trình ứng dụng] đủ trưởng thành để được tin cậy trong các quy trình sản xuất. Tuy nhiên, quy ước đánh số phiên bản này phủ nhận lịch sử của một dự án đã trở thành tiêu chuẩn mà những người khác tuân theo và đã được áp dụng rộng rãi trong nghiên cứu và công nghiệp

Sự xuất hiện của SciPy vào thời điểm này thật đáng ngạc nhiên và hơi bất thường. Khi bắt đầu hoạt động vào năm 2001, thư viện có rất ít kinh phí và chủ yếu được viết bởi các sinh viên đã tốt nghiệp—nhiều người trong số họ không được đào tạo về khoa học máy tính và thường không có sự hỗ trợ của các cố vấn. Thậm chí tưởng tượng rằng một nhóm nhỏ các lập trình viên sinh viên 'bất hảo' có thể nâng đỡ hệ sinh thái phần mềm nghiên cứu đã được thiết lập tốt—được hỗ trợ bởi hàng triệu đô la tài trợ và hàng trăm kỹ sư có trình độ cao10,11,12—là điều vô lý

Tuy nhiên, các động lực triết học đằng sau một ngăn xếp công cụ hoàn toàn mở, kết hợp với một cộng đồng thân thiện, hào hứng với một trọng tâm duy nhất, đã được chứng minh là tốt lành trong thời gian dài. Chúng không chỉ dẫn đến thư viện được mô tả trong bài viết này mà còn dẫn đến toàn bộ hệ sinh thái các gói liên quan [https. //wiki. con trăn. org/moin/NumericAndScientific] và nhiều hoạt động xã hội xoay quanh họ [https. //wiki. con trăn. org/moin/PythonConferences]. Các gói trong hệ sinh thái SciPy chia sẻ các tiêu chuẩn cao về triển khai, tài liệu và thử nghiệm, và một nền văn hóa háo hức học hỏi và áp dụng các phương pháp thực hành tốt hơn—cả về quản lý cộng đồng và phát triển phần mềm

Tiểu sử

Ở đây chúng tôi ghi lại lịch sử có chọn lọc của một số cột mốc và sự kiện quan trọng trong quá trình phát triển của SciPy. Bất chấp những gì chúng tôi nhấn mạnh ở đây, điều quan trọng là phải hiểu rằng một dự án như SciPy chỉ có thể thực hiện được nhờ có sự đóng góp của rất nhiều người đóng góp—quá nhiều người để đề cập riêng lẻ, nhưng mỗi người đóng góp một phần quan trọng cho câu đố

Python là ngôn ngữ lập trình máy tính đa năng, cấp cao, được thông dịch, được thiết kế bởi Guido van Rossum vào cuối những năm 1980, với hệ thống kiểu động và nhấn mạnh vào khả năng đọc và tạo mẫu nhanh13 [https. //github. com/trăn/cpython]. Là một ngôn ngữ lập trình có mục đích chung, nó không có hỗ trợ đặc biệt cho các cấu trúc dữ liệu hoặc thuật toán khoa học, không giống như nhiều nền tảng tính toán đã được thiết lập khác vào thời điểm đó. Tuy nhiên, các nhà khoa học đã sớm phát hiện ra những ưu điểm của ngôn ngữ này, chẳng hạn như khả năng bao bọc các thư viện C và Fortran, sau đó điều khiển các thư viện đó một cách tương tác. Do đó, các nhà khoa học có thể có quyền truy cập vào nhiều thư viện tính toán hiện có mà không cần quan tâm đến các khái niệm lập trình cấp thấp như quản lý bộ nhớ

Năm 1995, Jim Hugunin, một sinh viên tốt nghiệp tại Học viện Công nghệ Massachusetts, đã viết thông điệp đầu tiên trong danh sách gửi thư mới của Python Matrix Special Interest Group [Matrix-SIG]14

“Dường như có một lượng lớn sự quan tâm trong cộng đồng Python liên quan đến việc bổ sung các phép toán số vào Python. Mong muốn của riêng tôi là có sẵn một thư viện hàm dựa trên ma trận càng lớn càng tốt [đại số tuyến tính, hàm riêng, xử lý tín hiệu, thống kê, v.v. ]. Để đảm bảo rằng tất cả các thư viện này tương tác với nhau, cần có sự thống nhất về một đối tượng ma trận cơ bản có thể được sử dụng để biểu diễn các mảng số. ”

Trong vài tháng tới, các cuộc trò chuyện trong danh sách gửi thư đó bởi Jim Fulton, Jim Hugunin, Paul Dubois, Konrad Hinsen và Guido van Rossum đã dẫn đến việc tạo ra một gói có tên Numeric với một đối tượng mảng hỗ trợ nhiều . Jim Hugunin giải thích tiện ích của Python để tính toán số15

“Tôi đã sử dụng gần như tất cả các ngôn ngữ số có sẵn lúc này hay lúc khác trong 8 năm qua. Một điều tôi nhận thấy là theo thời gian, các nhà thiết kế của những ngôn ngữ này đang dần bổ sung thêm nhiều tính năng mà người ta mong đợi tìm thấy trong một ngôn ngữ lập trình có mục đích chung. ”

Đây vẫn là một tính năng phân biệt của Python đối với khoa học và là một trong những lý do tại sao nó lại thành công như vậy trong lĩnh vực khoa học dữ liệu. thay vì thêm các tính năng chung vào ngôn ngữ được thiết kế cho tính toán số và khoa học, ở đây các tính năng khoa học được thêm vào ngôn ngữ có mục đích chung. Điều này mở rộng phạm vi của các vấn đề có thể được giải quyết dễ dàng, mở rộng các nguồn dữ liệu có thể truy cập dễ dàng và tăng quy mô của cộng đồng phát triển mã cho nền tảng

khoa học viễn tưởng bắt đầu

Đến cuối những năm 1990, các cuộc thảo luận xuất hiện trên Matrix-SIG thể hiện mong muốn có một môi trường phân tích dữ liệu khoa học hoàn chỉnh16. Travis Oliphant, một nghiên cứu sinh tiến sĩ tại Mayo Clinic, đã phát hành một số gói17,18 được xây dựng dựa trên gói mảng Numeric và cung cấp các thuật toán để xử lý tín hiệu, các hàm đặc biệt, ma trận thưa thớt, cầu phương, tối ưu hóa, biến đổi Fourier nhanh, v.v. Một trong những gói này, Multipack [http. // pylab. nguồn. mạng/nhiều gói. html], là một tập hợp các mô-đun mở rộng bao bọc các thư viện Fortran và C để giải các phương trình phi tuyến tính và các bài toán bình phương nhỏ nhất, tích hợp các phương trình vi phân và khớp splines. Robert Kern, khi đó là sinh viên đại học [và hiện là nhà phát triển cốt lõi của SciPy], đã cung cấp hướng dẫn biên dịch trong Windows. Cũng trong khoảng thời gian đó, Pearu Peterson, một nghiên cứu sinh tiến sĩ từ Estonia, đã phát hành F2PY19, một công cụ dòng lệnh để liên kết mã Python và Fortran, đồng thời viết các mô-đun cho đại số tuyến tính và phép nội suy. Eric Jones, khi còn là sinh viên tốt nghiệp tại Đại học Duke, đã viết các gói để hỗ trợ luận án của mình, bao gồm một công cụ lập lịch trình công việc song song và trình tối ưu hóa di truyền. Gary Strangman, một nghiên cứu sinh sau tiến sĩ tại Trường Y Harvard, đã xuất bản một số thói quen thống kê mô tả và suy luận20

Với một môi trường lập trình phong phú và một đối tượng mảng số đã sẵn sàng, thời điểm đã chín muồi để phát triển một ngăn xếp phần mềm khoa học đầy đủ. Năm 2001, Eric Jones và Travis Vaught thành lập Enthought Scientific Computing Solutions [nay là Enthought, Inc. ] ở Austin, Texas, Mỹ. Để đơn giản hóa ngăn xếp công cụ, họ đã tạo dự án SciPy, xoay quanh thư viện SciPy, dự án này sẽ gộp tất cả các gói nêu trên. Dự án mới nhanh chóng đạt được động lực, với một trang web và kho lưu trữ mã21 xuất hiện vào tháng 2 và một danh sách gửi thư được công bố22 vào tháng 6 năm 2001. Đến tháng 8 năm 2001, một bản phát hành đầu tiên đã được công bố23, một đoạn trích được trình bày trong Hộp 1. Vào tháng 9, tài liệu đầu tiên được xuất bản24. Hội thảo SciPy đầu tiên25 được tổ chức vào tháng 9 năm 2002 tại Caltech—một sự kiện duy nhất kéo dài hai ngày với 50 người tham gia, nhiều người trong số họ là nhà phát triển của SciPy và các thư viện xung quanh

Tại thời điểm này, Python khoa học bắt đầu thu hút sự chú ý nghiêm túc hơn; . Ví dụ, Paul Dubois tại Phòng thí nghiệm Quốc gia Lawrence Livermore [LLNL] đã đảm nhận việc bảo trì Numeric và tài trợ cho việc viết hướng dẫn sử dụng26 của nó, và Viện Khoa học Kính viễn vọng Không gian [STScI], cơ quan phụ trách các hoạt động khoa học của Kính viễn vọng Không gian Hubble, đã quyết định . Khi STScI tiếp tục sử dụng Python cho một phần ngày càng lớn của quy trình phân tích dữ liệu của Kính viễn vọng Không gian Hubble, họ đã gặp sự cố với bộ chứa mảng số Python. Numeric, gói mảng ban đầu, phù hợp với các mảng nhỏ, nhưng không phù hợp với các hình ảnh lớn được xử lý bởi STScI. Với sự ủng hộ của người bảo trì Numeric, quyết định đã được đưa ra để viết NumArray28, một thư viện có thể xử lý dữ liệu ở quy mô lớn hơn. Thật không may, NumArray tỏ ra không hiệu quả đối với các mảng nhỏ, mang đến cho cộng đồng một lựa chọn khá đáng tiếc. Năm 2005, Travis Oliphant đã kết hợp những yếu tố tốt nhất của Numeric và NumArray, nhờ đó giải quyết được vấn đề nan giải. NumPy 1. 0 được phát hành29 vào tháng 10 năm 2006, mở đường cho cộng đồng Python khoa học thống nhất trưởng thành

SciPy đáo hạn

Vào giữa đến cuối những năm 2000, SciPy bắt đầu trưởng thành sau một giai đoạn dài tăng trưởng và áp dụng đáng kể. Phạm vi của thư viện SciPy bị thu hẹp, trong khi bề rộng của hệ sinh thái phát triển thông qua một loại gói phụ trợ mới. các scikit [https. //www. scipy. org/scikits. html], một thư viện bổ sung được phát triển bên ngoài SciPy, cho phép khám phá nhanh hơn các ý tưởng thử nghiệm trong khi vẫn duy trì phương pháp phát triển và phong cách quen thuộc. In SciPy itself, tooling, development, documentation and release processes became more professional. The library was expanded carefully, with the patience affordable in open-source projects and via best practices, which are increasingly common in the scientific Python ecosystem and industry30

Các phiên bản đầu tiên của SciPy có tài liệu tối thiểu, nhưng điều này bắt đầu thay đổi với bản phát hành năm 2006 của Hướng dẫn về NumPy1. Vào năm 2007, Sphinx31 đã có thể tự động kết xuất các tài liệu siêu văn bản và PDF từ văn bản thuần túy [các chuỗi tài liệu] xen kẽ với mã Python và vào năm 2008, pydocweb 32 đã được kích hoạt . Dự án Tài liệu SciPy33,34 đã sử dụng các công cụ này để hoàn thành tài liệu về chức năng hướng tới người dùng của SciPy. cung cấp áo phông cho những người đóng góp từ khắp nơi trên thế giới để đổi lấy văn bản chất lượng cao, nó đã thu thập sự đóng góp từ hơn 75 người để tạo ra một cuốn sách hướng dẫn dài 884 trang35. Kể từ đó, SciPy vẫn cam kết duy trì tài liệu chất lượng cao như một phần của chu trình phát triển thông thường.

In the early SciPy workshops, recurrent topics reflected the state of development, with emphasis being placed on the underlying array package, plotting, parallel processing, acceleration/wrapping and user interfaces. Đến năm 2004, các bài thuyết trình về ứng dụng của SciPy cho các vấn đề khoa học bắt đầu xuất hiện. The event also started to draw in more keynote speakers from outside the community, such as Guido van Rossum [creator of Python, 2006], Ivan Krstić [One Laptop per Child, 2007], Alex Martelli [Google, 2008] and Peter Norvig [Google Research, 2009]. Hội thảo không chính thức đã phát triển từ một nhóm nhỏ các nhà phát triển cốt lõi thành một hội nghị quốc tế với hàng trăm người tham dự, tăng kinh phí, một kỷ yếu được xuất bản và học bổng cho sinh viên tham dự. Đến năm 2010, hội nghị SciPy của Hoa Kỳ đã có nhiều tuyến đường và các hội nghị vệ tinh đã được tổ chức bởi các tình nguyện viên ở những nơi khác, chẳng hạn như EuroSciPy [từ năm 2008] và SciPy Ấn Độ [từ năm 2009]. Special sessions and minisymposia dedicated to scientific Python began appearing at many other events. For example, a three-part minisymposium organized for International Conferences on Computational Science and Engineering [CSE] 2009 was featured in SIAM News36

Năm 2007, Python đã có một sự hiện diện mạnh mẽ trong khoa học và kỹ thuật đến mức các biên tập viên của IEEE Computing in Science and Engineering đã mời một số đặc biệt về Python trong khoa học37, do Paul Dubois biên tập. Tuy nhiên, Python vẫn đủ thích hợp để người đọc bình thường sẽ cần thêm thông tin để quyết định xem nó có hữu ích trong công việc của họ hay không. The follow-up March/April 2011 Python for Scientists and Engineers special issue38 focused more on the core parts of the scientific Python ecosystem39 including NumPy2, Cython40 and Mayavi41. Python trở nên phổ biến đến mức các tạp chí bắt đầu xuất bản các số báo đặc biệt dành riêng cho từng miền. Ví dụ: vào năm 2015, Frontiers in Neuroinformatics đã xuất bản một tuyển tập gồm 25 bài báo—bao gồm các chủ đề bao gồm mô hình hóa và mô phỏng, thu thập dữ liệu, điện sinh lý, trực quan hóa cũng như tạo và trình bày kích thích—được gọi là Python trong Khoa học thần kinh42

SciPy today

Tính đến tháng 2 năm 2019, thư viện SciPy bao gồm gần 600.000 dòng mã nguồn mở được tổ chức thành 16 gói con được tóm tắt trong Hộp 2. Nhóm phát triển và cộng đồng hiện tương tác và hoạt động chủ yếu trên GitHub, một nền tảng quản lý tác vụ và kiểm soát phiên bản trực tuyến. Over 110,000 GitHub repositories and 6,500 packages depend on SciPy43. Some of the major feature highlights from the three years preceding SciPy 1. 0 are discussed in the “Key technical improvements” section below, and milestones in its history are highlighted in Fig. 1

Quả sung. 1. Major milestones from SciPy’s initial release in 2001 to the release of SciPy 1. 0 in 2017

Note that SciKits and GitHub have been introduced in the Background section; more information about Cython and SciPy subpackages [for example, scipy. sparse ] is available in the ‘Architecture and implementation choices’ section, BLAS/LAPACK support is detailed in the ‘Key technical improvements’ section, and continuous integration is discussed in the ‘Test and benchmark suite’ section.

Hình ảnh kích thước đầy đủ

Hộp 1 Đoạn trích từ SciPy 0. 1 thông báo phát hành [đã sửa lỗi chính tả], đăng ngày 20 tháng 8 năm 2001 trên danh sách gửi thư Python-list

SciPy là một gói mã nguồn mở dựa trên các điểm mạnh của Python và Numeric, cung cấp nhiều chức năng khoa học và số nhanh chóng. Bộ mô-đun hiện tại của SciPy bao gồm những thứ sau

  • Các chức năng đặc biệt [Bessel, Hankel, Airy và các chức năng khác]

  • Xử lý tín hiệu/hình ảnh

  • Khả năng vẽ đồ thị 2D

  • Hội nhập

  • bộ giải ODE

  • Tối ưu hóa [đơn giản, BFGS, Newton-CG và những người khác]

  • giải thuật di truyền

  • Trình biên dịch biểu thức số sang C++

  • Công cụ lập trình song song

  • Splines và phép nội suy

  • Các mặt hàng khác

Hộp 2 Tổ chức trọn gói

Thư viện SciPy được tổ chức dưới dạng một tập hợp các gói con. 16 gói con bao gồm các khối xây dựng toán học [ví dụ: đại số tuyến tính, biến đổi Fourier, hàm đặc biệt], cấu trúc dữ liệu [ví dụ: ma trận thưa thớt, cây k-D], thuật toán [ví dụ: tối ưu hóa và tích hợp số, phân cụm, nội suy, thuật toán đồ thị

Ở đây chúng tôi tóm tắt phạm vi và khả năng của từng gói con. Thông tin bổ sung có sẵn trong hướng dẫn SciPy [https. // tài liệu. scipy. org/doc/scipy/reference/tutorial/] và tham chiếu API [https. // tài liệu. scipy. org/doc/scipy/tham chiếu/chỉ mục. html#api-tham chiếu]

cụm

Gói con cụm chứa cụm. vq , cung cấp thuật toán lượng tử hóa véc-tơ và k-mean, và cụm . cấu trúc phân cấp , cung cấp các chức năng cho phân cụm theo thứ bậc và tổng hợp.

hằng số

Các hằng số vật lý và toán học, bao gồm các giá trị CODATA khuyến nghị của các hằng số vật lý cơ bản119

fftpack

Công thức biến đổi Fourier nhanh. Ngoài bản thân FFT, gói con bao gồm các hàm cho các phép biến đổi sin và cos rời rạc và cho các toán tử giả vi phân

tích hợp

Gói con tích phân cung cấp các công cụ để tính toán bằng số các tích phân xác định đơn và bội và giải phương trình vi phân thông thường, bao gồm cả giá trị ban đầu .

nội suy

Gói con nội suy chứa các hàm và lớp spline, các lớp nội suy một chiều và nhiều chiều [đơn biến và đa biến], Lagrange và Taylor .

io

Tập hợp các hàm và lớp để đọc và viết Matlab [https. //www. toán học. com/products/matlab. html], các tệp dữ liệu IDL, Matrix Market120, Fortran, NetCDF121, Harwell-Boeing122, WAV và ARFF

linalg

Các hàm đại số tuyến tính, bao gồm các hàm cơ bản của ma trận, chẳng hạn như số vết, định thức, chỉ tiêu và số điều kiện;

hình ảnh

Gói con này chứa các chức năng khác nhau để xử lý hình ảnh đa chiều, bao gồm tích chập và các bộ lọc tuyến tính và phi tuyến [bộ lọc Gaussian, bộ lọc trung vị, bộ lọc Sobel và các bộ lọc khác];

linh tinh

Một tập hợp các chức năng không phù hợp với các gói con khác. Mặc dù gói phụ này vẫn tồn tại trong SciPy 1. 0, một nỗ lực đang được tiến hành để loại bỏ hoặc di chuyển nội dung của gói con này và xóa nó

lẻ

Hồi quy khoảng cách trực giao, bao gồm trình bao bọc Python cho thư viện Fortran ODRPACK54

tối ưu hóa

Gói con này bao gồm các bộ giải lập trình tuyến tính điểm trong và đơn giản, triển khai nhiều thuật toán tối thiểu hóa phi tuyến, một quy trình khớp đường cong bình phương nhỏ nhất và một bộ sưu tập các bộ giải phi tuyến chung để tìm nghiệm

dấu hiệu

The signal tập trung vào xử lý tín hiệu và lý thuyết hệ thống tuyến tính cơ bản. Chức năng bao gồm tích chập và tương quan, splines, lọc và thiết kế bộ lọc, hệ thống tuyến tính thời gian liên tục và rời rạc, tạo dạng sóng, chức năng cửa sổ, tính toán wavelet, tìm đỉnh và phân tích quang phổ.

thưa thớt

Gói con này bao gồm việc triển khai một số biểu diễn của ma trận thưa thớt. scipy. thưa thớt. linalg cung cấp một tập hợp các thủ tục đại số tuyến tính hoạt động với ma trận thưa thớt, bao gồm bộ giải phương trình tuyến tính, phân tách giá trị riêng, phân tách giá trị đơn lẻ và phân tích thừa số LU. scipy. thưa thớt. csgraph cung cấp một tập hợp các thuật toán đồ thị mà đồ thị được biểu diễn bằng ma trận thưa thớt. Các thuật toán bao gồm các thành phần được kết nối, đường đi ngắn nhất, cây bao trùm tối thiểu và hơn thế nữa.

không gian

Gói con này cung cấp cấu trúc dữ liệu không gian và thuật toán, bao gồm cây k-d, phép đo tam giác Delaunay, bao lồi và sơ đồ Voronoi. scipy. không gian. distance cung cấp một tập hợp lớn các hàm khoảng cách, cùng với các hàm tính toán khoảng cách giữa tất cả các cặp vectơ trong một tập hợp điểm đã cho hoặc giữa tất cả các cặp từ hai tập hợp điểm.

đặc biệt

Cái tên này xuất phát từ lớp hàm theo truyền thống được gọi là hàm đặc biệt, nhưng theo thời gian, gói con đã phát triển để bao gồm các hàm ngoài các hàm đặc biệt cổ điển. Một đặc điểm phù hợp hơn của gói con này chỉ đơn giản là các chức năng hữu ích. Nó bao gồm một bộ sưu tập lớn các chức năng đặc biệt cổ điển như Airy, Bessel và các chức năng khác; . comb and factorial; and more.

số liệu thống kê

Gói con số liệu thống kê cung cấp một bộ sưu tập lớn các phân phối xác suất liên tục và rời rạc, mỗi phân phối có các phương pháp tính toán PDF hoặc PMF, CDF, khoảnh khắc .

Lựa chọn kiến ​​trúc và triển khai

Phạm vi dự án

SciPy cung cấp các thuật toán cơ bản cho điện toán khoa học. Phạm vi rộng của nó được rút ra từ hướng dẫn về hệ thống phân loại phần mềm toán học [GAMS] có sẵn44. Trong các lĩnh vực di chuyển tương đối chậm, chẳng hạn như đại số tuyến tính, SciPy nhằm mục đích cung cấp phạm vi bảo hiểm đầy đủ. Trong các lĩnh vực khác, nó nhằm mục đích cung cấp các khối xây dựng cơ bản đồng thời tương tác tốt với các gói khác chuyên biệt trong lĩnh vực đó. Ví dụ: SciPy cung cấp những gì người ta mong đợi tìm thấy trong sách giáo khoa thống kê [phân phối xác suất, kiểm tra giả thuyết, thống kê tần suất, hàm tương quan, v.v.], trong khi Statsmodels45 cung cấp các phương pháp suy luận và ước tính thống kê nâng cao hơn, scikit-learn3 bao gồm học máy và . //mc-stan. org] bao gồm thống kê Bayes và mô hình xác suất. scikit-image4 cung cấp khả năng xử lý hình ảnh ngoài ndimage của SciPy, SymPy48 cung cấp giao diện Python để tính toán tượng trưng và sparse. csgraphspatial cung cấp các công cụ cơ bản để làm việc với biểu đồ và mạng so với các thư viện chuyên biệt như NetworkX49.

Chúng tôi sử dụng các tiêu chí sau để xác định xem có nên đưa chức năng mới vào SciPy hay không

  • Thuật toán có liên quan đến nhiều lĩnh vực khoa học

  • Thuật toán rất quan trọng. Ví dụ, nó đủ kinh điển để được đưa vào sách giáo khoa hoặc nó dựa trên một bài báo được bình duyệt có số lượng trích dẫn đáng kể

Về hệ thống phần mềm và kiến ​​trúc, phạm vi của SciPy phù hợp với NumPy. các thuật toán cho tính toán trong bộ nhớ trên các máy đơn lẻ, với sự hỗ trợ cho nhiều loại dữ liệu và kiến ​​trúc quy trình. Điện toán phân tán và hỗ trợ cho các đơn vị xử lý đồ họa [GPU] rõ ràng nằm ngoài phạm vi tại 1. 0, nhưng điều này đã được sửa đổi trong lộ trình của chúng tôi [xem Thảo luận]

lựa chọn ngôn ngữ

Theo phân tích sử dụng thư viện nhà ngôn ngữ học [https. //github. com/github/linguist], SciPy có khoảng 50% Python, 25% Fortran, 20% C, 3% Cython và 2% C++, với một chút TeX, Matlab, shell script và Make. Việc phân phối các ngôn ngữ lập trình phụ trong SciPy là sự thỏa hiệp giữa một ngôn ngữ mạnh mẽ, nâng cao hiệu suất, tương tác tốt với Python [nghĩa là Cython] và việc sử dụng các ngôn ngữ [và thư viện của chúng] đã được chứng minh là đáng tin cậy và hoạt động hiệu quả trong nhiều thập kỷ.

Fortran, bất chấp tuổi đời của nó, vẫn là một ngôn ngữ lập trình khoa học hiệu năng cao được sử dụng liên tục trong thời hiện đại50. Vì vậy, chúng tôi gói các thư viện Fortran đã được thử nghiệm thực tế xuất sắc sau đây để mang lại sự thuận tiện cho Python đồng thời hưởng lợi từ hiệu suất của chúng. QUADPACK51 và ODEPACK52 để tích hợp số và giải các bài toán giá trị ban đầu; . 59] để tính các hàm Bessel;

Nằm trong ba ngôn ngữ hàng đầu trong SciPy là C, ngôn ngữ này cũng đã được thiết lập rất tốt trong vài thập kỷ61 của máy tính khoa học. Các thư viện C mà chúng tôi đưa vào SciPy bao gồm trlib62 để tối ưu hóa, SuperLU63,64 để giải các hệ tuyến tính thưa thớt, Qhull65 cho hình học tính toán và Cephes [http. //www. netlib. org/cephes/] cho các chức năng đặc biệt

Cython đã được mô tả là một ngôn ngữ creole kết hợp các phần tốt nhất của Python và các mô hình C/C++ cấp thấp hơn40. Chúng tôi thường sử dụng Cython như một chất kết dính giữa các thư viện máy tính khoa học cấp thấp, được thiết lập tốt được viết bằng C/C++ và giao diện Python do SciPy cung cấp. Chúng tôi cũng sử dụng Cython để kích hoạt các cải tiến hiệu suất trong mã Python, đặc biệt đối với các trường hợp vòng lặp bên trong được sử dụng nhiều được hưởng lợi từ mã được biên dịch với kiểu gõ tĩnh

Để triển khai chức năng mới, Python vẫn là ngôn ngữ được lựa chọn. Nếu hiệu suất của Python là một vấn đề, thì chúng tôi ưu tiên sử dụng Cython, sau đó là C, C++ hoặc Fortran [theo thứ tự đó]. Động lực chính cho điều này là khả năng bảo trì. Cython có mức độ trừu tượng cao nhất và hầu hết các nhà phát triển Python sẽ hiểu nó. C cũng được biết đến rộng rãi và dễ quản lý hơn đối với nhóm phát triển cốt lõi hiện tại so với C ++ và đặc biệt là Fortran

Vị trí mà SciPy nắm giữ gần nền tảng của hệ sinh thái Python khoa học đến mức việc áp dụng các ngôn ngữ mới hoặc các phụ thuộc chính nói chung là khó xảy ra; . GPU acceleration, new transpiling libraries and the latest JIT compilation approaches [for example, Numba66] are very powerful but have traditionally fallen outside the remit of the main SciPy library. That said, we have recently increased our efforts to support compatibility with some of these options, and our full test suite passed with the PyPy JIT compiler67 at the 1. 0 điểm phát hành

Sự phát triển của API và ABI

API cho SciPy bao gồm khoảng 1.500 hàm và lớp. Chính sách của chúng tôi về việc phát triển API theo thời gian là chức năng mới có thể được thêm vào, trong khi việc xóa hoặc thay đổi chức năng hiện có chỉ có thể được thực hiện nếu lợi ích vượt quá chi phí [thường là đáng kể] cho người dùng và chỉ sau khi đưa ra cảnh báo rõ ràng về việc ngừng sử dụng cho những người dùng đó đối với tại . Nói chung, chúng tôi khuyến khích các thay đổi giúp cải thiện tính rõ ràng trong API của thư viện nhưng đặc biệt không khuyến khích việc phá vỡ khả năng tương thích ngược, do vị trí của chúng tôi gần cơ sở của ngăn xếp máy tính Python khoa học

Ngoài API Python, SciPy còn có giao diện C và Cython. Do đó, chúng ta cũng phải xem xét giao diện nhị phân ứng dụng [ABI]. This ABI has been stable for a long time, and we aim to evolve it only in a backward-compatible way

Cải tiến kỹ thuật chính

Ở đây chúng tôi mô tả những cải tiến kỹ thuật quan trọng được thực hiện trong ba năm qua

Cấu trúc dữ liệu

ma trận thưa thớt

scipy. thưa thớt cung cấp bảy cấu trúc dữ liệu ma trận thưa thớt, còn được gọi là định dạng thưa thớt. Những cái quan trọng nhất là định dạng nén hàng và cột [CSR và CSC, tương ứng]. Chúng cung cấp khả năng lập chỉ mục trục chính nhanh và phép nhân vectơ ma trận nhanh, đồng thời được sử dụng nhiều trong SciPy và các gói phụ thuộc

Trong ba năm qua, các phần bên trong xử lý ma trận thưa thớt của chúng tôi đã được viết lại và hiệu suất đã được cải thiện. Lặp lại và cắt các ma trận CSC và CSR hiện nhanh hơn tới 35% và tốc độ chuyển đổi định dạng tọa độ [COO]/đường chéo [DIA] sang CSR/CSC đã tăng lên. SuperLU63 was updated to version 5. 2. 1, tăng cường triển khai cấp thấp được tận dụng bởi một tập hợp con các dịch vụ thưa thớt của chúng tôi.

Từ quan điểm tính năng mới, scipy. thưa thớt ma trận và toán tử tuyến tính hiện hỗ trợ toán tử nhân ma trận Python [ @ ]. Chúng tôi đã thêm scipy. thưa thớt. norm and scipy. thưa thớt. random for computing sparse matrix norms and drawing random variates from arbitrary distributions, respectively. Also, we made a concerted effort to bring the scipy. sparse API into line with the equivalent NumPy API where possible.

cKDTree

scipy . không gian. Mô-đun ckdtree , triển khai cấu trúc dữ liệu phân vùng không gian tổ chức các điểm trong không gian k chiều, được viết lại bằng C++ với các lớp mẫu. Hỗ trợ đã được thêm vào cho các điều kiện biên định kỳ, thường được sử dụng trong mô phỏng các quá trình vật lý.

Vào năm 2013, độ phức tạp về thời gian của tìm kiếm k-láng giềng gần nhất từ ​​ cKDTree. query was approximately loglinear68, consistent with its formal description69. Since then, we enhanced cKDTree. truy vấn bằng cách triển khai lại nó trong C++, loại bỏ rò rỉ bộ nhớ và cho phép giải phóng khóa trình thông dịch toàn cục [GIL] để có thể sử dụng nhiều luồng70. Điều này nói chung đã cải thiện hiệu suất đối với bất kỳ vấn đề cụ thể nào trong khi vẫn duy trì độ phức tạp tiệm cận.

Vào năm 2015, SciPy đã thêm quy trình sparse_ distance_matrix để tạo ma trận khoảng cách thưa gần đúng giữa KDTreeKDTreeKDTree objects by ignoring all distances that exceed a user-provided value. This routine is not limited to the conventional L2 [Euclidean] norm but supports any Minkowski p-norm between 1 and infinity. By default, the returned data structure is a dictionary of keys [DOK]-based sparse matrix, which is very efficient for matrix construction. This hashing approach to sparse matrix assembly can be seven times faster than constructing with CSR format71, and the C++ level sparse matrix construction releases the Python GIL for increased performance. Once the matrix is constructed, distance value retrieval has an amortized constant time complexity72, and the DOK structure can be efficiently converted to a CSR, CSC or COO matrix to allow for speedy arithmetic operations.

In 2015, the cKDTree dual tree counting algorithm73 was enhanced to support weights74, which are essential in many scientific applications, for example, computing correlation functions of galaxies75.

Các liên kết hợp nhất với mã được biên dịch

Mức độ thấpCó thể gọi

Kể từ SciPy phiên bản 0. 19, người dùng có thể bọc các chức năng cấp thấp trong một scipy. Đối tượng LowLevelCallable giúp giảm chi phí gọi các hàm C đã biên dịch, chẳng hạn như các hàm được tạo bằng Numba hoặc Cython, trực tiếp từ Python. Các hàm cấp thấp được hỗ trợ bao gồm các đối tượng PyCapsule , con trỏ hàm ctypes và < . Hơn nữa, có thể tự động tạo chức năng gọi lại cấp thấp từ mô-đun Cython bằng cách sử dụng cffi function pointers. Furthermore, it is possible to generate a low-level callback function automatically from a Cython module using scipy. Mức độ thấpCó thể gọi. from_cython .

Liên kết Cython dành cho BLAS, LAPACK và đặc biệt

SciPy đã cung cấp các chức năng đặc biệt và tận dụng các chương trình con đại số tuyến tính cơ bản [BLAS] và gói đại số tuyến tính [LAPACK]76 trong nhiều năm. SciPy hiện bao gồm thêm các trình bao bọc Cython40 cho nhiều quy trình BLAS và LAPACK [được thêm vào năm 2015] và các chức năng đặc biệt được cung cấp trong scipy. special subpackage [added in 2016], which are available in scipy. linalg. cython_blas , scipy. linalg. cython_lapack and scipy. đặc biệt. cython_special , tương ứng. Khi viết các thuật toán trong Cython, thông thường sẽ hiệu quả hơn nếu gọi trực tiếp vào các gói SciPy của thư viện thay vì gọi gián tiếp, sử dụng API Python của SciPy. Các giao diện cấp thấp này cho Cython cũng có thể được sử dụng bên ngoài cơ sở mã SciPy để có quyền truy cập vào các chức năng trong các thư viện được bao bọc trong khi tránh được các lệnh gọi hàm Python. Điều này có thể mang lại hiệu suất tăng một hoặc hai bậc độ lớn cho nhiều trường hợp sử dụng.

Các nhà phát triển cũng có thể sử dụng các giao diện Cython cấp thấp mà không cần liên kết với các thư viện được bao bọc77. Điều này cho phép các tiện ích mở rộng khác tránh được sự phức tạp khi tìm và sử dụng đúng thư viện. Avoiding this complexity is especially important when wrapping libraries written in Fortran. Các trình bao bọc cấp thấp này không chỉ có thể được sử dụng mà không cần trình biên dịch Fortran, chúng còn có thể được sử dụng mà không cần phải xử lý tất cả các ABI trình biên dịch Fortran khác nhau và các sơ đồ xáo trộn tên

Most of these low-level Cython wrappers are generated automatically to help with both correctness and ease of maintenance. The wrappers for BLAS and LAPACK are primarily generated using type information that is parsed from the BLAS and LAPACK source files using F2PY19, though a small number of routines use hand-written type signatures instead. The input and output types of each routine are saved in a data file that is read at build time and used to generate the corresponding Cython wrapper files. Các hàm bao trong scipy. special. cython_special are also generated from a data file containing type information for the wrapped routines.

Vì SciPy có thể được xây dựng với LAPACK 3. 4. 0 trở lên, trình bao bọc Cython chỉ được cung cấp cho các quy trình duy trì giao diện nhất quán trên tất cả các phiên bản LAPACK được hỗ trợ. Giao diện BLAS tiêu chuẩn được cung cấp bởi các thư viện BLAS hiện có khác nhau hiện không thay đổi, do đó, những thay đổi thường không cần thiết trong các trình bao bọc do SciPy cung cấp. Các thay đổi đối với trình bao bọc Cython cho các chức năng trong scipy. đặc biệt theo dõi các thay đổi tương ứng đối với giao diện của gói con đó.

Numerical optimization

scipy . optimize subpackage provides functions for the numerical solution of several classes of root finding and optimization problems. Here we highlight recent additions through SciPy 1. 0.

tối ưu hóa tuyến tính

A new interior-point optimizer for continuous linear programming problems, linprog with method = ’interior-point’ , was released with SciPy 1. 0. Triển khai thuật toán cốt lõi của bộ giải thương mại MOSEK78, nó giải quyết tất cả hơn 90 bài toán điểm chuẩn NETLIB LP79 đã được thử nghiệm. Không giống như một số phương pháp điểm bên trong, công thức tự đối ngẫu đồng nhất này cung cấp các chứng chỉ về tính khả thi hoặc không bị chặn khi thích hợp.

Một thủ tục giải quyết trước80 giải các bài toán tầm thường và mặt khác thực hiện đơn giản hóa vấn đề, chẳng hạn như thắt chặt giới hạn và loại bỏ các biến cố định, và một trong số các thủ tục để loại bỏ các ràng buộc đẳng thức dư thừa được chọn tự động để giảm khả năng gặp khó khăn về số do các ma trận đơn lẻ gây ra. Mặc dù triển khai bộ giải chính là Python thuần túy, hỗ trợ ma trận thưa thớt từ đầu đến cuối và sử dụng nhiều bộ giải hệ thống tuyến tính đã biên dịch của SciPy—thường cho cùng một hệ thống có nhiều vế phải do phương pháp dự đoán-chỉnh sửa—cung cấp đủ tốc độ cho các bài toán

Nonlinear optimization. local minimization

Chức năng tối thiểu hóa cung cấp một giao diện thống nhất để tìm cực tiểu cục bộ của các bài toán tối ưu hóa phi tuyến tính. Bốn phương pháp mới để tối ưu hóa không giới hạn đã được thêm vào thu nhỏ trong các phiên bản gần đây của SciPy. dogleg , trust-ncg , trust-exact and trust-krylov. All are trust-region methods that build a local model of the objective function based on first and second derivative information, approximate the best point within a local ‘trust region’ and iterate until a local minimum of the original objective function is reached, but each has unique characteristics that make it appropriate for certain types of problems. For instance, trust-exact achieves fast convergence by solving the trust-region subproblem almost exactly, but it requires the second derivative Hessian matrix to be stored and factored every iteration, which may preclude the solution of large problems [≥1,000 variables]. In contrast, trust-ncg and trust-krylov are well suited to large-scale optimization problems because they do not need to store and factor the Hessian explicitly, instead using second derivative information in a faster, approximate way. Chúng tôi so sánh chi tiết các đặc điểm của tất cả các phương pháp giảm thiểu trong Bảng 1, bảng này minh họa mức độ hoàn thiện mà SciPy hướng tới khi đề cập đến một phương pháp hoặc chủ đề số.

Bảng 1 Các phương pháp tối ưu hóa từ giảm thiểu

Bảng kích thước đầy đủ

tối ưu hóa phi tuyến tính. giảm thiểu toàn cầu

giảm thiểu có thể trả về bất kỳ mức tối thiểu cục bộ nào nên một số vấn đề yêu cầu sử dụng quy trình tối ưu hóa toàn cục. scipy mới. tối ưu hóa. differential_evolution function81,82 is a stochastic global optimizer that works by evolving a population of candidate solutions. Trong mỗi lần lặp lại, các ứng cử viên dùng thử được tạo ra bởi sự kết hợp của các ứng cử viên từ quần thể hiện có. Nếu các ứng cử viên thử nghiệm đại diện cho một sự cải tiến, thì dân số được cập nhật. Most recently, the SciPy benchmark suite gained a comprehensive set of 196 global optimization problems for tracking the performance of existing solvers over time and for evaluating whether the performance of new solvers merits their inclusion in the package.

Statistical distributions

scipy . stats gói con chứa hơn 100 phân phối xác suất. 96 continuous and 13 discrete univariate distributions, and 10 multivariate distributions. Việc triển khai dựa trên một khung nhất quán cung cấp các phương pháp lấy mẫu các biến ngẫu nhiên, để đánh giá hàm phân phối tích lũy [CDF] và hàm mật độ xác suất [PDF] cũng như để điều chỉnh các tham số cho mọi phân phối. Nói chung, các phương pháp dựa trên các triển khai cụ thể cho từng phân phối, chẳng hạn như biểu thức dạng đóng của CDF hoặc thuật toán lấy mẫu, nếu có. Otherwise, default methods are used based on generic code, for example, numerical integration of the PDF to obtain the CDF. Key recent distributions added to scipy. thống kê bao gồm phân phối dựa trên biểu đồ trong scipy. stats. rv_histogram and the multinomial distribution in scipy. stats. multinomial [used, for example, in natural language processing83].

nội suy đa thức

Trong lịch sử, SciPy chủ yếu dựa vào thư viện FITPACK Fortran đáng kính của P. Dierckx53,84 cho phép nội suy đơn biến và xấp xỉ dữ liệu, nhưng thiết kế nguyên khối ban đầu và API để tương tác giữa SciPy và FITPACK đã hạn chế đối với cả người dùng và nhà phát triển

Implementing a new, modular design of polynomial interpolators was spread over several releases. Mục tiêu của nỗ lực này là có một tập hợp các đối tượng cơ bản biểu diễn các đa thức từng phần, để thực hiện một tập hợp các thuật toán để xây dựng các bộ nội suy khác nhau và cung cấp cho người dùng các khối xây dựng để xây dựng các bộ nội suy bổ sung

At the lowest level of the new design are classes that represent univariate piecewise polynomials. PPoly [SciPy 0. 13]85, BPoly [SciPy 0. 13] and BSpline [SciPy 0. 19]86, which allow efficient vectorized evaluations, differentiation, integration and root-finding. PPoly represents piecewise polynomials in the power basis in terms of breakpoints and coefficients at each interval. BPoly is similar and represents piecewise polynomials in the Bernstein basis [which is suitable, for example, for constructing Bézier curves]. BSpline represents spline curves, that is, linear combinations of B-spline basis elements87.

Trong lớp tiếp theo, các lớp đa thức này được sử dụng để xây dựng một số cách nội suy dữ liệu phổ biến. CubicSpline [SciPy 0. 18]88 constructs a twice differentiable piecewise cubic function, Akima1DInterpolator and PCHIPInterpolator implement two classic prescriptions for constructing a C1 continuous monotone shape-preserving interpolator89,90.

Test and benchmark suite

bộ thử nghiệm

Phát triển dựa trên thử nghiệm đã được mô tả như một cách để quản lý nỗi sợ hãi và sự không chắc chắn khi thực hiện thay đổi mã91. Đối với mỗi thành phần của SciPy, chúng tôi viết nhiều bài kiểm tra thực thi nhỏ để xác minh hành vi dự định của nó. Bộ sưu tập những thứ này, được gọi là 'bộ thử nghiệm', làm tăng độ tin cậy về tính đúng đắn và chính xác của thư viện, đồng thời cho phép chúng tôi thực hiện các sửa đổi mã được biết là không làm thay đổi hành vi mong muốn. Theo thông lệ tích hợp liên tục92, tất cả các đóng góp được đề xuất cho SciPy tạm thời được tích hợp với nhánh chính của thư viện trước khi bộ kiểm tra được chạy và tất cả các kiểm tra phải được thông qua trước khi đóng góp được hợp nhất vĩnh viễn. Liên tục theo dõi số lượng dòng mã trong SciPy được bao phủ bởi các bài kiểm tra đơn vị là một cách chúng tôi duy trì sự chắc chắn rằng các thay đổi và tính năng mới được triển khai chính xác

Bộ thử nghiệm SciPy được điều phối bởi một ma trận tích hợp liên tục bao gồm các nền tảng POSIX và Windows [32/64-bit] do Travis CI và AppVeyor quản lý, tương ứng. Các thử nghiệm của chúng tôi bao gồm Python phiên bản 2. 7, 3. 4, 3. 5, 3. 6 và bao gồm linting mã với pyflakespycodestyle . Có hơn 13.000 bài kiểm tra đơn vị trong bộ bài kiểm tra, được viết để sử dụng với pytest [https. // tài liệu. người khó tính. org/vi/mới nhất]. Trong bộ lễ phục. 2, chúng tôi hiển thị dữ liệu phạm vi thử nghiệm lịch sử được tạo bằng cách sử dụng phương pháp dựa trên Docker [https. //github. com/tylerjereddy/scipy-cov-track]. Ngoại trừ việc loại bỏ 61.000 dòng mã đã biên dịch cho SciPy v0. Kể từ ngày 14 tháng 10, khối lượng của cả mã được biên dịch [C, C++ và Fortran] và mã Python đã tăng lên giữa các lần phát hành, cũng như số lượng dòng được bao phủ bởi các bài kiểm tra đơn vị. Kiểm tra phạm vi bảo hiểm tại SciPy 1. 0 là 87% đối với mã Python theo pytest-cov [https. //pypi. org/dự án/pytest-cov/]. Mức độ phù hợp của mã được biên dịch [C, C++ và Fortran] chỉ là 45% theo gcov [https. // gcc. gnu. org/onlinedocs/gcc/Gcov. html], nhưng cơ sở mã được biên dịch mạnh mẽ hơn nhiều so với con số này gợi ý vì con số này không chính xác khi bao gồm mã của nhà cung cấp có uy tín, thư viện ban đầu đã được kiểm tra kỹ lưỡng; . Tài liệu về mã được dịch vụ CircleCI tự động xây dựng và xuất bản để tạo điều kiện đánh giá các thay đổi/tính toàn vẹn của tài liệu.

Quả sung. 2

Khối lượng mã Python và được biên dịch trong SciPy theo thời gian

Hình ảnh kích thước đầy đủ

bộ điểm chuẩn

Ngoài việc đảm bảo vượt qua các bài kiểm tra đơn vị, điều quan trọng là phải xác nhận rằng hiệu suất của cơ sở mã SciPy được cải thiện theo thời gian. Kể từ tháng 2 năm 2015, hiệu suất của SciPy đã được theo dõi bằng Tốc độ bay [ asv https. //github. com/airspeed-velocity/asv]. chạy của SciPy. Tập lệnh py kết hợp thuận tiện các tính năng của asv sao cho có thể tạo kết quả điểm chuẩn theo thời gian bằng một lệnh console. Ví dụ, trong hình. 3, chúng tôi minh họa sự cải tiến của scipy. không gian. cKDTree. truy vấn trong khoảng 9 năm lịch sử dự án. Cây được sử dụng trong điểm chuẩn được tạo mà không áp dụng cấu trúc liên kết hình xuyến [ boxsize = Không ] và các thử nghiệm được thực hiện bởi Airspeed Velocity 0. 4 sử dụng Python 2. 7, NumPy 1. 8. 2 và Cython phiên bản 0. 27. 3, 0. 21. 1 và 0. 18 [để cải thiện khả năng tương thích ngược]. Những cải tiến đáng kể về hiệu suất đã được thực hiện khi cKDTree được Cython hóa hoàn toàn và một lần nữa khi nó được viết lại bằng C++.

Hình. 3. Kết quả của scipy. spatial. cKDTree. query benchmark from the introduction of cKDTree to the release of SciPy 1. 0.

Điểm chuẩn tạo cây k-d từ các điểm được phân phối đồng đều trong siêu khối đơn vị m chiều, sau đó tìm hàng xóm [Euclidean] gần nhất trong cây cho mỗi 1.000 điểm truy vấn. Each marker in the figure indicates the execution time of the benchmark for a commit in the master branch of SciPy

Hình ảnh kích thước đầy đủ

Tổ chức dự án và cộng đồng

Governance

SciPy đã thông qua một tài liệu quản trị chính thức [https. // tài liệu. scipy. org/doc/scipy/tham chiếu/dev/quản trị/quản trị. html] vào ngày 3 tháng 8 năm 2017. Một hội đồng chỉ đạo, hiện gồm 18 thành viên, giám sát sự phát triển hàng ngày của dự án bằng cách đóng góp mã và xem xét các đóng góp từ cộng đồng. Các thành viên hội đồng có quyền cam kết đối với kho lưu trữ dự án, nhưng họ phải hợp nhất các thay đổi chỉ khi không có sự phản đối thực sự nào của cộng đồng. Chủ tịch hội đồng chỉ đạo, Ralf Gommers, chịu trách nhiệm bắt đầu đánh giá kỹ thuật hai năm một lần về hướng dự án và tóm tắt mọi hoạt động của hội đồng tư nhân cho cộng đồng rộng lớn hơn. Nhà độc tài nhân từ suốt đời của dự án, Pauli Virtanen, có thẩm quyền vượt trội về mọi vấn đề, nhưng phải hành động một cách thiện chí và chỉ thực hiện thẩm quyền này khi hội đồng chỉ đạo không thể đạt được thỏa thuận

Quy tắc ứng xử chính thức của SciPy đã được phê duyệt vào ngày 24 tháng 10 năm 2017. Tóm lại, có năm hướng dẫn cụ thể. cởi mở với tất cả mọi người tham gia vào cộng đồng của chúng tôi; . Bộ quy tắc ứng xử chỉ rõ cách thức các hành vi vi phạm có thể được báo cáo cho ủy ban quy tắc ứng xử và phác thảo các quy trình phản hồi của ủy ban. Tuyên bố về sự đa dạng của chúng tôi “chào đón và khuyến khích mọi người tham gia. ”

Maintainers and contributors

Dự án SciPy có ~100 người đóng góp duy nhất cho mỗi chu kỳ phát hành 6 tháng. Bất kỳ ai quan tâm và có kỹ năng đều có thể trở thành cộng tác viên; . //scipy. github. io/devdocs/dev/contributor/contributor_toc. html] provides guidance on how to do that. Ngoài ra, dự án hiện có 15 nhân viên bảo trì tích cực [tình nguyện viên]. những người xem xét sự đóng góp của người khác và làm mọi thứ khác cần thiết để đảm bảo rằng phần mềm và dự án tiến lên phía trước. Những người bảo trì rất quan trọng đối với sức khỏe của dự án93; . Bất kỳ ai cũng có thể trở thành người bảo trì vì họ được chọn trên cơ sở luân phiên từ những người đóng góp có lịch sử đóng góp đáng kể với chất lượng cao

Kinh phí

Chi phí phát triển của SciPy được Open Hub ước tính vượt quá 10 triệu đô la [https. //www. openhub. net/p/scipy/estimated_cost]. Tuy nhiên, dự án phần lớn không được tài trợ, được phát triển chủ yếu bởi các sinh viên tốt nghiệp, giảng viên và các thành viên trong ngành trong thời gian rảnh rỗi của họ. Small amounts of funding have been applied with success. một số cuộc họp được tài trợ bởi các trường đại học và ngành công nghiệp, chương trình Summer of Code của Google hỗ trợ cơ sở hạ tầng và công việc thuật toán, và quỹ tài trợ giảng dạy đã được sử dụng sớm để phát triển tài liệu. However, funding from national agencies, foundations and industry has not been commensurate with the enormous stack of important software that relies on SciPy. Chi tiêu đa dạng hơn để hỗ trợ lập kế hoạch, phát triển, quản lý và cơ sở hạ tầng sẽ giúp SciPy duy trì nền tảng lành mạnh cho các nỗ lực khoa học và công nghiệp quốc tế

dự án hạ lưu

Hệ sinh thái Python khoa học bao gồm nhiều ví dụ về thư viện phần mềm dành riêng cho miền được xây dựng dựa trên các tính năng của SciPy và sau đó quay lại thư viện SciPy cơ sở để đề xuất và thậm chí triển khai các cải tiến. Ví dụ: có những người đóng góp chung cho các thư viện lõi SciPy và Astropy94 và những gì hoạt động tốt cho một trong các cơ sở mã, cơ sở hạ tầng hoặc cộng đồng thường được chuyển dưới dạng này sang dạng khác. Ở cấp độ cơ sở mã, chức năng binned_statistic là một trong những đóng góp liên dự án như vậy. ban đầu nó được phát triển trong gói liên kết với Astropy và sau đó được đặt trong SciPy. In this perspective, SciPy serves as a catalyst for cross-fertilization throughout the Python scientific computing community.

Thảo luận

SciPy có cộng đồng nhà phát triển mạnh mẽ và cơ sở người dùng khổng lồ. Số liệu lưu lượng truy cập GitHub báo cáo khoảng 20.000 khách truy cập duy nhất vào trang web nguồn trong khoảng thời gian từ ngày 14 tháng 5 năm 2018 đến ngày 27 tháng 5 năm 2018 [gần thời điểm viết bài], với 721 bản sao duy nhất ['bản sao'] của cơ sở mã trong khoảng thời gian đó. Cộng đồng nhà phát triển tại thời điểm đó bao gồm 610 người đóng góp mã nguồn duy nhất, với hơn 19.000 cam kết được chấp nhận vào cơ sở mã [dữ liệu trang GitHub]

Từ phía người dùng, đã có 13.096.468 lượt tải xuống SciPy từ Chỉ số đóng gói Python [PyPI]95 và 5.776.017 thông qua kênh mặc định của conda [//github.com/ContinuumIO/anaconda-package-data] package manager during the year 2017. These numbers establish a lower bound on the total number of downloads by users given that PyPI and conda chỉ là hai trong số một số phương pháp phổ biến để cài đặt SciPy. Trang web SciPy [http. //www. scipy. org/], which has been the default citation in the absence of a peer-reviewed paper, has been cited over 3,000 times [https. // học giả. Google. com/scholar?cites=2086009121748039507]. Một số cách sử dụng hoặc minh chứng nổi bật nhất về độ tin cậy của SciPy bao gồm sự hợp tác khoa học LIGO-Virgo dẫn đến việc quan sát sóng hấp dẫn96, thực tế là SciPy được vận chuyển trực tiếp cùng với macOS và trong bản phân phối của Intel dành cho Python97, và SciPy đó là . //github. blog/2019-01-24-the-state-of-the-octoverse-machine-learning/].

Tuy nhiên, SciPy liên tục cố gắng cải thiện. Lộ trình SciPy [https. // tài liệu. scipy. org/doc/scipy-1. 0. 0/tham khảo/lộ trình. html, https. //scipy. github. io/devdocs/lộ trình. html], được tóm tắt trong Bảng 2, là một tài liệu được cập nhật liên tục do cộng đồng duy trì, mô tả một số hướng chính để cải thiện dự án, cũng như các hạn chế và vấn đề cụ thể cần hỗ trợ trong tương lai. Ngoài các mục trong lộ trình, chúng tôi vẫn đang làm việc để tăng số lượng hướng dẫn sử dụng SciPy ngoài 15 phần hiện tại của chúng tôi. Ngoài ra, mã Cython cấp thấp trong thư viện của chúng tôi [tương tác với mã cấp C và hiển thị mã đó để sử dụng Python] có thể sử dụng một số biện pháp hiện đại hóa, bao gồm di chuyển sang các lần xem bộ nhớ đã nhập để xử lý các mảng NumPy

Bảng 2 Tóm tắt các hạng mục trong Lộ trình SciPy sau 1. 0 phát hành

Bảng kích thước đầy đủ

Một vấn đề mà nhiều dự án nguồn mở gặp phải là thu hút và giữ chân các nhà phát triển. Mặc dù việc một số cá nhân đóng góp cho một dự án trong một thời gian rồi tiếp tục là điều bình thường, nhưng quá nhiều doanh thu có thể dẫn đến việc mất bộ nhớ của tổ chức, dẫn đến lỗi trong quá khứ được lặp lại, API của mã mới trở nên không phù hợp với mã cũ. . Chúng tôi may mắn là dự án SciPy tiếp tục thu hút các nhà phát triển mới nhiệt tình và có năng lực trong khi vẫn duy trì sự tham gia của một người bảo vệ cũ nhỏ nhưng tận tâm. Có những người đóng góp đã có mặt trong những năm đầu của dự án vẫn đóng góp vào các cuộc thảo luận về báo cáo lỗi và đánh giá các đóng góp mã mới. Nhà độc tài nhân từ suốt đời của chúng tôi đã tham gia dự án hơn 10 năm và vẫn đang tích cực đóng góp mã, và người đứng đầu hội đồng chỉ đạo của chúng tôi, người cũng đóng vai trò là tổng giám đốc, sắp đến ngày kỷ niệm 11 năm của ông. Thêm nửa tá nhà phát triển tích cực đã đóng góp đều đặn trong năm năm trở lên. Sự kết hợp của một người bảo vệ cũ tận tụy và một loạt những người đóng góp mới đảm bảo rằng SciPy sẽ tiếp tục phát triển trong khi vẫn duy trì chất lượng cao

Một thách thức quan trọng cuối cùng cần giải quyết là khả năng cung cấp GPU và điện toán phân tán mà không làm gián đoạn cơ sở hạ tầng thuật toán/API thông thường và được sử dụng nhiều của chúng tôi. Mặc dù cách tiếp cận chính xác mà chúng tôi sẽ áp dụng trên toàn bộ thư viện để tận dụng các công nghệ mới nổi này vẫn chưa rõ ràng và không phải là ưu tiên tại 1. 0, chúng tôi hiện có triển khai cụ thể gói phụ cho phép sử dụng thử nghiệm nhiều chương trình phụ trợ, chẳng hạn như cấu trúc dữ liệu có thể điều khiển bằng GPU, trong scipy mới. fft . Điều này sẽ được mô tả chi tiết trong một báo cáo trong tương lai.

Tóm tắt báo cáo

Thông tin thêm về thiết kế nghiên cứu có sẵn trong Tóm tắt báo cáo nghiên cứu tự nhiên được liên kết với bài viết này

Dữ liệu sẵn có

Dữ liệu thô cho Hình. 2 có sẵn tại https. //github. com/tylerjereddy/scipy-cov-track và dữ liệu thô cho Hình. 3 có sẵn tại https. //github. com/scipy/scipy-articles/tree/master/scipy-1. 0/supporting_info/asv_bench/cKDTree

mã sẵn có

Tất cả mã nguồn thư viện SciPy đều có sẵn trong kho lưu trữ SciPy GitHub, https. //github. com/scipy/scipy

Thay đổi lịch sử

  • 24 Tháng hai 2020

    Bản sửa lỗi cho bài báo này đã được xuất bản. https. // doi. tổ chức/10. 1038/s41592-020-0772-5

Người giới thiệu

  1. Oliphant, T. E. Hướng dẫn về NumPy lần đầu xuất bản [Trelgol Publishing USA, 2006]

  2. van derWalt, S. , Colbert, S. C. & Varoquaux, G. Mảng NumPy. một cấu trúc để tính toán số hiệu quả. máy tính. Khoa học. Anh. 13, 22–30 [2011]

    Google học giả

  3. Pedregosa, F. et al. Scikit-học. máy học trong Python. J. máy móc. Học. độ phân giải. 12, 2825–2830 [2011]

    Google học giả

  4. van derWalt, S. et al. hình ảnh scikit. xử lý ảnh trong Python. ngang hàng. 2, e453 [2014]

    PubMed  PubMed Central  Google Scholar

  5. Nitz, A. et al. gwastro/pycbc. PyCBC v1. 13. 2 phát hành, https. //doi. tổ chức/10. 5281/zenodo. 1596771 [27/11/2018]

  6. Vallisneri, M. , Kanner, J. , Williams, R. , Weinstein, A. & Stephens, B. Trung tâm Khoa học Mở LIGO. J. vật lý. tâm sự. người phục vụ. 610, 012021 [2015]

    Google học giả

  7. Abbott, B. P. et al. GW150914. Kết quả đầu tiên từ việc tìm kiếm sự hợp nhất của lỗ đen nhị phân với Advanced LIGO. vật lý. Tái bản. Đ. 93, 122003 [2016]

    PubMed  PubMed Central  Google Scholar

  8. Abbott, B. P. et al. GW170817. quan sát sóng hấp dẫn từ sao đôi neutron truyền cảm hứng. vật lý. Tái bản. thư. 119, 161101 [2017]

    CAS  PubMed  Google Scholar

  9. Hợp tác Kính viễn vọng Chân trời Sự kiện. et al. Kết quả kính viễn vọng chân trời sự kiện M87 đầu tiên. III. Data processing and calibration. Astrophys. J. Lett. 875, L3 [2019]

    Google học giả

  10. Blanton, K. At Mathworks, support + fun = success. CEO Jack Little believes in power of his workers–and their ideas. The Boston Globe, J5 [20 April 1997]

  11. Howell, D. Jack Dangermond’s digital mapping lays it all out. Investor’s Business Daily [14 August 2009]

  12. Cảng, O. Simple solutions. BusinessWeek, 24–24 [3 October 2005]

  13. van Rossum, G. Python/C API Reference Manual, http. //citeseerx. ist. psu. edu/viewdoc/download?doi=10. 1. 1. 211. 6702&rep=rep1&type=pdf [2001]

  14. Hugunin, J. The matrix object proposal [very long], https. //mail. python. org/pipermail/matrix-sig/1995-August/000002. html [18 August 1995]

  15. Hugunin, J. Extending Python for numerical computation, http. //hugunin. net/papers/hugunin95numpy. html [1995]

  16. Oliphant, T. E. Moving forward from the last decade of SciPy. Slide thuyết trình, https. //hội nghị. scipy. org/scipy2010/slides/travis_oliphant_keynote. pdf [1 July 2010]

  17. Oliphant, T. E. Some Python modules. Lưu trữ web, https. //web. archive. org/web/19990125091242/http. //oliphant. netpedia. net. 80/ [25 January 1999]

  18. Oliphant, T. E. Modules to enhance Numerical Python. Lưu trữ web, https. //web. archive. org/web/20001206213500/http. //oliphant. netpedia. net. 80/ [6 December 2000]

  19. Peterson, P. F2PY. a tool for connecting Fortran and Python programs. Int. J. Comput. Sci. Eng. 4, 296–305 [2009]

    Google học giả

  20. Strangman, G. mô-đun Python. Web Archive, https. // trang web. archive. org/web/20001022231108/http. //www. nmr. mgh. harvard. edu/Neural_Systems_Group/gary/python. html [2000]

  21. SciPy Developers. SciPy. org. Web Archive, https. //web. lưu trữ. org/web/20010309040805/http. //scipy. org. 80/ [2001]

  22. Vaught, T. N. SciPy Developer mailing list now online, https. //mail. con trăn. org/pipermail/scipy-dev/2001-tháng 6/000000. Html [2001]

  23. Jones, E. ANN. khoa học 0. 10–máy tính khoa học với Python, https. //thư. con trăn. org/pipermail/python-list/2001-tháng 8/106419. Html [2001]

  24. Vaught, T. N. Tài liệu tham khảo và tài liệu Hướng dẫn hiện có sẵn để tải xuống dưới dạng tarball. Web Archivehttps. // trang web. archive. org/web/20021013204556/http. //www. scipy. org. 80/scipy/site_content/site_news/docs_released1 [2002]

  25. Vaught, T. N. [ANN] SciPy ‘02 - Python for Scientific Computing Workshop, https. //mail. python. org/pipermail/numpy-discussion/2002-June/001511. Html [2002]

  26. Ascher, D. , Dubois, P. F. , Hinsen, K. , Hugunin, J. & Oliphant, T. E. An open source project. Numerical Python, https. //doi. org/10. 5281/zenodo. 3599566 [2001]

  27. Greenfield, P. How Python slithered Into astronomy. Presentation, https. //conference. scipy. org/scipy2011/slides/greenfield_keynote_astronomy. pdf [2011]

  28. Greenfield, P. , Miller, J. T. , Hsu, J. T. & White, R. L. numarray. a new scientific array package for Python. PyCon DC [2003]

  29. NumPy Developers. v1. 0, https. //github. com/numpy/numpy/releases/tag/v1. 0 [25 tháng 10 năm 2006]

  30. Millman, K. J. & Pérez, F. Developing open-source scientific practice. in Implementing Reproducible Research [CRC Press] 149–183 [2014]

  31. Brandl, G. & the Sphinx team. Sphinx - Python Documentation Generator, http. //www. sphinx-doc. org/en/master/ [2007]

  32. Virtanen, P. et al. pydocweb. a tool for collaboratively documenting Python modules via the web. Web Archive, https. //code. google. com/archive/p/pydocweb/ [2008]

  33. Harrington, J. The SciPy documentation project. In Proceedings of the 7th Python in Science Conference [eds G. Varoquaux, G. , Vaught, T. & Millman, K. J. ] 33–35 [2008]

  34. van der Walt, S. The SciPy documentation project [technical overview]. In Proceedings of the 7th Python in Science Conference [eds G. Varoquaux, G. , Vaught, T. & Millman, K. J. ] 27–28 [2008]

  35. Harrington, J. & Goldsmith, D. Progress report. NumPy and SciPy documentation in 2009. In Proceedings of the 8th Python in Science Conference [eds Varoquaux, G. , van der Walt, S. & Millman, K. J. ] 84–87 [2009]

  36. Pérez, F. , Langtangen, H. P. & LeVeque, R. Python for scientific computing. In SIAM Conference on Computational Science and Engineering, 42 [5] [2009]

  37. Dubois, P. F. Python. batteries included. Comput. Sci. Eng. 9, 7–9 [2007]

    Google học giả

  38. Millman, K. J. & Aivazis, M. Python for scientists and engineers. Comput. Khoa học. Eng. 13, 9–12 [2011]

    Google học giả

  39. Pérez, F. , Granger, B. E. & Hunter, J. D. Python. an ecosystem for scientific computing. máy tính. Sci. Anh. 13, 13–21 [2011]

    Google học giả

  40. Behnel, S. et al. Cython. the best of both worlds. Comput. Sci. Eng. 13, 31–39 [2011]

    Google học giả

  41. Ramachandran, P. & Varoquaux, G. Mayavi. 3D visualization of scientific data. Comput. Sci. Eng. 13, 40–51 [2011]

    Google học giả

  42. Muller, E. et al. Python in neuroscience. Front. Neuroinform. 9, 11 [2015]

    PubMed  PubMed Central  Google Scholar

  43. GitHub. Network dependents - scipy/scipy, https. //github. com/scipy/scipy/network/dependents [2019]

  44. Boisvert, R. F. , Howe, S. E. & Kahaner, D. K. The guide to available mathematical software problem classification system. Commun. Stat. Simul. Comput 20, 811–842 [1991]

    Google học giả

  45. Seabold, S. & Perktold, J. Statsmodels. econometric and statistical modeling with Python. In Proceedings of the 9th Python in Science Conference 57–61 [2010]

  46. Salvatier, J. , Wiecki, T. V. & Fonnesbeck, C. Probabilistic programming in Python using PyMC3. PeerJ Comput. Sci. 2, e55 [2016]

    Google học giả

  47. Foreman-Mackey, D. , Hogg, D. W. , Lang, D. & Goodman, J. emcee. the MCMC hammer. Publ. Astron. Soc. Pac. 125, 306–312 [2013]

    Google học giả

  48. Meurer, A. et al. SymPy. symbolic computing in Python. PeerJ Comput. Sci. 3, e103 [2017]

    Google học giả

  49. Hagberg, A. A. , Schult, D. A. & Swart, P. J. Exploring network structure, dynamics, and function using NetworkX. In Proceedings of the 7th Python in Science Conference. [eds G. Varoquaux, G. , Vaught, T. & Millman, K. J. ] 11–15 [2008]

  50. Koelbel, C. H. & Zosel, M. E. The High Performance FORTRAN Handbook [MIT Press, 1993]

  51. Piessens, R. , de Doncker-Kapenga, E. , Uberhuber, C. W. & Kahaner, D. K. QUADPACK. A Subroutine Package for Automatic Integration [Springer, 1983]

  52. Hindmarsh, A. C. ODEPACK, a systematized collection of ODE solvers. Scientific Computing 55–64 [1983]

  53. Dierckx, P. Curve and Surface Fitting with Splines [Oxford Univ. Press, 1993]

  54. Boggs, P. T. , Byrd, R. H. , Rogers, J. E. & Schnabel, R. B. User’s Reference Guide for ODRPACK Version 2. 01. Software for Weight Orthogonal Distance Regression [U. S. Bộ Thương mại, Viện Tiêu chuẩn và Công nghệ Quốc gia, 1992]

  55. Moré. Jorge J. , Garbow, B. S. & Hillstrom, K. E. User guide for MINPACK-1. Report ANL-80–74 [Argonne National Laboratory, 1980]

  56. Swarztrauber, P. N. Vector hóa các FFT. In Parallel Computations [ed. Rodrigue, G. ] 51–83 [Academic, 1982]

  57. Swarztrauber, P. N. FFT algorithms for vector computers. Parallel Comput. 1, 45–63 [1984]

    Google học giả

  58. Lehoucq, R. B. , Sorensen, D. C. & Yang, C. ARPACK users’ guide. solution of large scale eigenvalue problems with implicitly restarted Arnoldi methods. [Rice University, 1997]

  59. Amos, D. E. Algorithm 644. A portable package for Bessel functions of a complex argument and nonnegative order. ACM Trans. Math. Softw. 12, 265–273 [1986]

    Google học giả

  60. Brown, B. , Lovato, J. & Russell, K. CDFLIB, https. //people. sc. fsu. edu/~jburkardt/f_src/cdflib/cdflib. html [accessed 6 July 2018]

  61. Kernighan, B. W. & Ritchie, D. M. Ngôn ngữ lập trình C tái bản lần 2 [Tham khảo kỹ thuật chuyên nghiệp Prentice Hall, 1988]

  62. Lenders, F. , Kirches, C. & Potschka, A. trlib. a vector-free implementation of the GLTR method for iterative solution of the trust region problem. Optim. Methods Softw. 33, 420–449 [2018]

    Google học giả

  63. Li, X. S. et al. SuperLU Users’ Guide. Report LBNL-44289 [Lawrence Berkeley National Laboratory, 1999]

  64. Li, X. S. An overview of SuperLU. algorithms, implementation, and user interface. ACM Trans. Math. Softw. 31, 302–325 [2005]

    Google học giả

  65. Barber, C. B. , Dobkin, D. P. & Huhdanpaa, H. The Quickhull algorithm for convex hulls. ACM Trans. Math. Softw. 22, 469–483 [1996]

    Google học giả

  66. Lam, S. K. , Pitrou, A. & Seibert, S. Numba. A LLVM-based Python JIT compiler. In Proceedings of the Second Workshop on the LLVM Compiler Infrastructure in HPC 7. 1–7. 6 [ACM, 2015]

  67. Bolz, C. F. , Cuni, A. , Fijalkowski, M. & Rigo, A. Tracing the meta-level. PyPy’s tracing JIT compiler. In Proceedings of the 4th Workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems 18–25 [ACM, 2009]

  68. VanderPlas, J. Benchmarking nearest neighbor searches in Python, https. //jakevdp. github. io/blog/2013/04/29/benchmarking-nearest-neighbor-searches-in-python/ [19 April 2013]

  69. Maneewongvatana, S. & Mount, D. M. Analysis of approximate nearest neighbor searching with clustered point sets. Preprint at https. //arxiv. org/pdf/cs/9901013. pdf [1999]

  70. Molden, S. ENH. Cải tiến về không gian. cKDTree, https. //github. com/scipy/scipy/pull/4374/ [7 January 2015]

  71. Aspnas, M. , Signell, A. & Westerholm, J. Efficient assembly of sparse matrices using hashing. In Applied Parallel Computing. State of the Art in Scientific Computing [eds Kagstrom, B. et al. ] 900–907 [Springer, 2007]

  72. Cormen, T. h. , Stein, C. , Rivest, R. L. & Leiserson, C. E. Introduction to Algorithms 2nd edn [McGraw-Hill Higher Education, 2001]

  73. Moore A. W. et al. Fast algorithms and efficient statistics. N-point correlation functions. In Mining the Sky. ESO Astrophysics Symposia [European Southern Observatory] [eds Banday, A. J. , Zaroubi, S. & Bartelmann, M. ] 71–82 [Springer, 2001]

  74. Feng, Y. ENH. Faster count_neighour in cKDTree / + weighted input data https. //github. com/scipy/scipy/pull/5647 [2015]

  75. Martin, A. M. , Giovanelli, R. , Haynes, M. P. & Guzzo, L. The clustering characteristics of HI-selected galaxies from the 40% ALFALFA survey. Astrophys. J. 750, 38 [2012]

    Google học giả

  76. Anderson, E. et al. LAPACK Users’ Guide 3rd edn [Society for Industrial and Applied Mathematics, 1999]

  77. Henriksen, I. Circumventing the linker. using SciPy’s BLAS and LAPACK within Cython. Trong Kỷ yếu của Hội nghị Khoa học Python lần thứ 14 [SciPy 2015] [eds Huff, K. & Bergstra, J. ] 49–52 [2015]

  78. Andersen, E. D. & Andersen, K. D. [2000] The Mosek interior point optimizer for linear programming. an implementation of the homogeneous algorithm. In High Performance Optimization 197–232 [Springer, 2000]

  79. The NETLIB LP test problem set, http. //www. numerical. rl. ac. uk/cute/netlib. html [2019]

  80. Andersen, E. D. & Andersen, K. D. Presolving in linear programming. Math. Program. 71, 221–245 [1995]

    Google học giả

  81. Wormington, M. , Panaccione, C. , Matney Kevin, M. & Bowen, D. K. Characterization of structures from X-ray scattering data using genetic algorithms. Philos. Trans. R. Soc. Lond. A 357, 2827–2848 [1999]

    CAS  Google Scholar 

  82. Storn, R. & Price, K. Differential evolution — a simple and efficient heuristic for global optimization over continuous spaces. J. Glob. tối ưu. 11, 341–359 [1997]

    Google học giả

  83. Griffiths, T. L. & Steyvers, M. Finding scientific topics. Proc. Natl Acad. Sci. USA 101[Suppl. 1], 5228–5235 [2004]

    CAS  PubMed  PubMed Central  Google Scholar 

  84. Dierckx, P. Curve and Surface Fitting with Splines [Oxford Univ. Press, 1993]

  85. Virtanen, P. ENH. interpolate. rewrite ppform evaluation in Cython, https. //github. com/scipy/scipy/pull/2885 [2013]

  86. Burovski, E. thêm b-splines, https. //github. com/scipy/scipy/pull/3174 [27 December 2013]

  87. de Boor, C. A Practical Guide to Splines [Springer, 1978]

  88. Mayorov, N. ENH. Bộ nội suy CubicSpline, https. //github. com/scipy/scipy/pull/5653 [2 January 2016]

  89. Fritsch, F. N. & Carlson, R. E. Monotone piecewise cubic interpolation. SIAM J. Numer. Anal. 17, 238–246 [1980]

    Google học giả

  90. Akima, H. A new method of interpolation and smooth curve fitting based on local procedures. J. Assoc. Comput. Mach. 17, 589–602 [1970]

    Google học giả

  91. Beck, K. Test-driven Development. By Example [Addison-Wesley, 2003]

  92. Silver, A. Collaborative software development made easy. Nature 550, 143–144 [2017]

    CAS  PubMed  Google Scholar

  93. Eghbal, N. Roads and Bridges. The Unseen Labor Behind Our Digital Infrastructure [Ford Foundation, 2016]

  94. The Astropy Collaboration. et al. Dự án thiên văn. building an open-science project and status of the v2. 0 core package. Astron. J. 156, 123 [2018]

    Google học giả

  95. Lev, O. , Dufresne, J. , Kasim, R. , Skinn, B. & Wilk, J. pypinfo. view PyPI download statistics with ease, https. //github. com/ofek/pypinfo [2018]

  96. Abbott, B. P. et al. Observation of gravitational waves from a binary black hole merger. Phys. Rev. Lett. 116, 061102 [2016]

    CAS  PubMed  Google Scholar

  97. David Liu. The Intel distribution for Python, https. //software. intel. com/en-us/articles/intel-optimized-packages-for-the-intel-distribution-for-python [25 August 2017, updated 30 October 2017, accessed 25 July 2018]

  98. Nelder, J. A. & Mead, R. A simplex method for function minimization. Comput. J. 7, 308–313 [1965]

    Google học giả

  99. Wright, M. H. Direct search methods. once scorned, now respectable. Pitman Research Notes in Mathematics Series 191–208 [1996]

  100. Powell, M. J. D. An efficient method for finding the minimum of a function of several variables without calculating derivatives. Comput. J. 7, 155–162 [1964]

    Google học giả

  101. Powell, M. J. D. A direct search optimization method that models the objective and constraint functions by linear interpolation. In Advances in Optimization and Numerical Analysis [eds Gomez, S. & Hennart, J. P. ] 51–67 [Springer, 1994]

  102. Powell, M. J. D. Direct search algorithms for optimization calculations. Acta Numerica 7, 287–336 [1998]

    Google học giả

  103. Powell, M. J. Đ. A view of algorithms for optimization without derivatives. Math. Today Bull. Inst. Math. Appl. 43, 170–174 [2007]

    Google học giả

  104. Polak, E. & Ribiere, G. Note sur la convergence de methodes de directions conjuguees. Rev. française d’informatique et. de. Rech. op. érationnelle 3, 35–43 [1969]

    Google học giả

  105. Nocedal, J. & Wright, S. Numerical Optimization 2nd edn [Springer Science & Business Media, 2006]

  106. Byrd, R. H. , Lu, P. , Nocedal, J. & Zhu, C. A limited memory algorithm for bound constrained optimization. SIAM J. Sci. Comput. 16, 1190–1208 [1995]

    Google học giả

  107. Zhu, C. , Byrd, R. H. , Lu, P. & Nocedal, J. Algorithm 778. L-BFGS-B. Fortran subroutines for large-scale bound-constrained optimization. ACM Trans. Math. Softw. 23, 550–560 [1997]

    Google học giả

  108. Schittkowski, K. On the convergence of a sequential quadratic programming method with an augmented Lagrangian line search function. Mathematische Operationsforschung und Statistik. Ser. Optim. 14, 197–216 [1983]

    Google học giả

  109. Schittkowski, K. The nonlinear programming method of Wilson, Han, and Powell with an augmented Lagrangian type line search function. Part 2. an efficient implementation with linear least squares subproblems. Numer. Math. 38, 115–127 [1982]

    Google học giả

  110. Schittkowski, K. The nonlinear programming method of Wilson, Han, and Powell with an augmented Lagrangian type line search function. Part 1. convergence analysis. Số. Math. 38, 83–114 [1982]

    Google học giả

  111. Kraft, D. A software package for sequential quadratic programming. Report DFVLR-FR 88–28 [Deutsche Forschungs- und Versuchsanstalt für Luft- und Raumfahrt, 1988]

  112. Nash, S. G. Newton-type minimization via the Lanczos method. SIAM J. Numer. Anal. 21, 770–788 [1984]

    Google học giả

  113. Powell, M. J. D. A new algorithm for unconstrained optimization. Nonlinear Programming 31–65 [1970]

  114. Steihaug, T. The conjugate gradient method and trust regions in large scale optimization. SIAM J. Numer. Anal. 20, 626–637 [1983]

    Google học giả

  115. Conn, A. R. , Gould, N. I. M. & Toint, P. L. Trust Region Methods [SIAM, 2000]

  116. Moré, J. J. & Sorensen, D. C. Computing a trust region step. SIAM J. Sci. Statist. Comput. 4, 553–572 [1983]

    Google học giả

  117. Gould, N. I. M. , Lucidi, S. , Roma, M. & Toint, P. L. Solving the trust-region subproblem using the Lanczos method. SIAM J. Optim. 9, 504–525 [1999]

    Google học giả

  118. Abbasi, H. Sparse. a more modern sparse array library. In Proceedings of the 17th Python in Science Conference [eds Akici, F. et al. ] 27–30 [2018]

  119. Mohr, P. J. , Newell, D. B. & Taylor, B. N. CODATA recommended values of the fundamental physical constants. 2014. J. Phys. Chem. Ref. Data 45, 043102 [2016]

    Google học giả

  120. Boisvert, R. F. , Pozo, R. , Remington, K. , Barrett, R. F. & Dongarra, J. J. Matrix Market. một tài nguyên web cho các bộ sưu tập ma trận thử nghiệm. In Quality of Numerical Software 125–137 [Springer, 1997]

  121. Rew, R. & Davis, G. NetCDF. một giao diện để truy cập dữ liệu khoa học. IEEE Comput. Graph. Appl. 10, 76–82 [1990]

    Google học giả

  122. Duff, I. S. , Grimes, R. G. & Lewis, J. G. Users’ guide for the Harwell-Boeing sparse matrix collection [release I], http. //citeseerx. ist. psu. edu/viewdoc/summary?doi=10. 1. 1. 41. 8922 [1992]

Download references

Acknowledgements

We thank everyone who has contributed to SciPy 1. 0, from those who have posted one comment about an issue through those who have made several small patches and beyond

Author information

Author notes

  1. A list of members and affiliations appears at the end of the paper

Authors and Affiliations

  1. University of Jyväskylä, Jyväskylä, Finland

    Pauli Virtanen

  2. Quansight LLC, Austin, TX, USA

    Ralf Gommers, Travis E. Oliphant & Anthony Scopatz

  3. Ultrasound Imaging, Mayo Clinic, Rochester, MN, USA

    Travis E. Oliphant

  4. Electrical Engineering, Brigham Young University, Provo, UT, USA

    Travis E. Oliphant

  5. Enthought, Inc. , Austin, TX, USA

    Travis E. Oliphant, Eric Jones & Robert Kern

  6. Anaconda Inc. , Austin, TX, USA

    Travis E. Oliphant & Ian Henriksen

  7. BioResource and Agricultural Engineering Department, California Polytechnic State University, San Luis Obispo, CA, USA

    Matt Haberland

  8. Department of Mathematics, University of California Los Angeles, Los Angeles, CA, USA

    Matt Haberland

  9. Los Alamos National Laboratory, Los Alamos, NM, USA

    Tyler Reddy & C. Nathan Woods

  10. Independent researcher, Tokyo, Japan

    David Cournapeau

  11. National Research University Higher School of Economics, Moscow, Russia

    Evgeni Burovski

  12. Independent researcher, Saue, Estonia

    Pearu Peterson

  13. Department of Mechanics and Applied Mathematics, Institute of Cybernetics at Tallinn Technical University, Tallinn, Estonia

    Pearu Peterson

  14. Berkeley Institute for Data Science, University of California Berkeley, Berkeley, CA, USA

    Warren Weckesser, Stéfan J. van der Walt & K. Jarrod Millman

  15. Independent researcher, New York, NY, USA

    Jonathan Bright, Alex Rothberg, Johannes L. Schönberger, Stefan Peterson & Tim Leslie

  16. School of Psychology, University of Birmingham, Edgbaston, Birmingham, UK

    Matthew Brett

  17. Independent researcher, San Francisco, CA, USA

    Joshua Wilson & G. Young

  18. Division of Biostatistics, University of California Berkeley, Berkeley, CA, USA

    K. Jarrod Millman

  19. WayRay LLC, Skolkovo Innovation Center, Moscow, Russia

    Nikolay Mayorov

  20. Australian Nuclear Science and Technology Organisation, Lucas Heights, NSW, Australia

    Andrew R. J. Nelson

  21. Institute for Learning and Brain Sciences, University of Washington, Seattle, WA, USA

    Eric Larson

  22. College of Information and Computing Sciences, University of Massachusetts Amherst, Amherst, MA, USA

    C J Carey

  23. Independent researcher, Amsterdam, the Netherlands

    İlhan Polat

  24. Berkeley Center for Cosmological Physics, University of California Berkeley, Berkeley, CA, USA

    Yu Feng

  25. Bruker Biospin Corp. , Billerica, MA, USA

    Eric W. Moore

  26. University of Washington, Seattle, WA, USA

    Jake VanderPlas

  27. Independent researcher, Toulouse, France

    Denis Laxalde

  28. Independent researcher, Montreal, Quebec, Canada

    Josef Perktold

  29. New Technologies Research Centre, University of West Bohemia, Plzeň, Czech Republic

    Robert Cimrman

  30. Department of Mathematics, Brigham Young University, Provo, UT, USA

    Ian Henriksen

  31. Oden Institute for Computational Engineering and Sciences, The University of Texas at Austin, Austin, TX, USA

    Ian Henriksen

  32. Independent researcher, Belmont, Massachusetts, USA

    E. Một. Quintero

  33. Space Dynamics Laboratory, North Logan, UT, USA

    Charles R. Harris

  34. Independent researcher, Logan, Utah, USA

    Charles R. Harris

  35. Anton Pannekoek Institute, Amsterdam, The Netherlands

    Anne M. Archibald

  36. Chương trình sau đại học về Kỹ thuật điện, Đại học Liên bang de Minas Gerais, Belo Horizonte, Brazil

    Antônio H. Ribeiro

  37. Google LLC, Montreal, Quebec, Canada

    Fabian Pedregosa

  38. Google LLC, Cambridge, MA, USA

    Paul van Mulbregt

  39. International Centre for Theoretical Sciences, Tata Institute of Fundamental Research, Bengaluru, India

    Aditya Vijaykumar

  40. Department of Physics, Birla Institute of Technology and Science, Pilani, India

    Aditya Vijaykumar

  41. Independent researcher, Milan, Italy

    Alessandro Pietro Bardelli

  42. Institute of Environmental Physics, University of Bremen, Bremen, Germany

    Andreas Hilboll

  43. Department of Computer Science, University of Illinois at Urbana-Champaign, Urbana, IL, USA

    Andreas Kloeckner

  44. Laboratoire Photonique, Numérique et Nanosciences UMR 5298, Université de Bordeaux, Institut d’Optique Graduate School, CNRS, Talence, France

    Antony Lee

  45. The University of Washington eScience Institute, The University of Washington, Seattle, WA, USA

    Ariel Rokem

  46. Federal Reserve Board of Governors, Washington, DC, USA

    Chad Fulton

  47. Datadog Inc. , New York, NY, USA

    Charles Masson

  48. HQ, Orexplore, Stockholm, Sweden

    Christian Häggström

  49. Statistics Department, University of California - Davis, Davis, CA, USA

    Clark Fitzgerald

  50. Emory University, Atlanta, GA, USA

    David A. Nicholson

  51. Applied BioMath, Concord, MA, USA

    David R. Hagen

  52. Khoa Khoa học Máy tính, Đại học Oxford, Oxford, Vương quốc Anh

    Dmitrii V. Pasechnik

  53. Phòng thí nghiệm Tin học Thần kinh, Quỹ Bruno Kessler, Trento, Ý

    Emanuele Olivetti

  54. Independent researcher, Chicago, IL, USA

    Eric Martin

  55. Department of Engineering, University of Cambridge, Cambridge, UK

    Eric Wieser

  56. Aix Marseille Univ, CNRS, Centrale Marseille, LMA, Marseille, France

    Fabrice Silva

  57. Interdisciplinary Center for Scientific Computing [IWR], Heidelberg University, Heidelberg, Germany

    Felix Lenders

  58. Nghiên cứu Doanh nghiệp ABB, ABB AG, Ladenburg, Đức

    Felix Lenders

  59. Institut für Mathematische Optimierung, Technische Universität Carolo-Wilhelmina zu Braunschweig, Braunschweig, Germany

    Felix Lenders

  60. Nhà nghiên cứu độc lập, Cologne, Đức

    Florian Wilhelm

  61. Lawrence Berkeley National Laboratory, Berkeley, CA, USA

    Gavin A. Price

  62. Institut für Physik, Universität Augsburg, Augsburg, Germany

    Gert-Ludwig Ingold

  63. Applied Research Laboratories, The University of Texas at Austin, Austin, TX, USA

    Gregory E. Allen

  64. Department of Radiology, School of Medicine, University of Cincinnati, Cincinnati, OH, USA

    Gregory R. Lee

  65. Department of Radiology, Cincinnati Children’s Hospital Medical Center, Cincinnati, OH, USA

    Gregory R. Lee

  66. Ascent Robotics Inc. , Tokyo, Japan

    Hervé Audren

  67. ENSTA Bretagne, Brest, France

    Irvin Probst

  68. Faculty of Physics, Ludwig-Maximilians-Universität, München, Germany

    Jörg P. Dietrich

  69. Excellence Cluster Universe, München, Đức

    Jörg P. Dietrich

  70. Independent researcher, Malden, Massachusetts, USA

    Jacob Silterra

  71. Khoa học dữ liệu, Chan Zuckerberg Biohub, San Francisco, CA, Hoa Kỳ

    James T Webber

  72. Faculty of Mechanical Engineering, University of Ljubljana, Ljubljana, Slovenia

    Janko Slavič

  73. Sydney Informatics Hub, The University of Sydney, Camperdown, NSW, Australia

    Joel Nothman

  74. Instituto de Astrofísica, Pontificia Universidad Católica de Chile, Santiago, Chile

    Johannes Buchner

  75. Max Planck Institute for Extraterrestrial Physics, Garching, Germany

    Johannes Buchner

  76. University of Stuttgart, Machine Learning and Robotics Lab, Stuttgart, Germany

    Johannes Kulick

  77. Department of Electrical Engineering, Universidade Federal de Campina Grande, Campina Grande, Brazil

    José Vinícius de Miranda Cardoso

  78. Department of Computer Science, Kiel University, Kiel, Germany

    Joscha Reimer

  79. Planetary Sciences Group and Florida Space Institute and Department of Physics, University of Central Florida, Orlando, FL, USA

    Joseph Harrington

  80. Independent researcher, Madrid, Spain

    Juan Luis Cano Rodríguez

  81. Monash Micro Imaging, Monash University, Clayton, VIC, Australia

    Juan Nunez-Iglesias

  82. Khoa Sinh học Phân tử, Tế bào và Phát triển, Đại học Colorado, Boulder, Boulder, CO, Hoa Kỳ

    Justin Kuczynski

  83. Department of Physics and Astronomy, Johns Hopkins University, Baltimore, MD, USA

    Kevin Tritz

  84. Independent researcher, Munich, Germany

    Martin Thoma

  85. Trung tâm nguồn bức xạ tiên tiến, Đại học Chicago, Chicago, IL, Hoa Kỳ

    Matthew Newville

  86. University of Tübingen, Tübingen, Germany

    Matthias Kümmerer

  87. Nhà nghiên cứu độc lập, Rugby, Vương quốc Anh

    Maximilian Bolingbroke

  88. Two Sigma Investments, New York, NY, USA

    Michael Tartre

  89. Khoa Cơ khí, Đại học Kỹ thuật Munich, Garching, CHLB Đức

    Mikhail Pak

  90. Independent researcher, Berkeley, CA, USA

    Nathaniel J. Smith

  91. Nhà nghiên cứu độc lập, London, Vương quốc Anh

    Nikolai Nowaczyk

  92. Independent researcher, Berlin, Germany

    Nikolai Shebanov

  93. Intel Corp. , Austin, TX, Hoa Kỳ

    Oleksandr Pavlyk

  94. Nhà nghiên cứu độc lập, Horten, Na Uy

    mỗi A. Brodtkorb

  95. Nhà nghiên cứu độc lập, Thành phố Daly, CA, Hoa Kỳ

    Perry Lee

  96. D. e. Nghiên cứu Shaw, New York, NY, Hoa Kỳ

    Robert T. McGibbon

  97. Phòng Sinh học Hệ thống Tính toán, Khoa Khoa học Vi sinh và Hệ sinh thái, Đại học Vienna, Vienna, Áo

    La Mã Feldbauer

  98. Nhà nghiên cứu độc lập, Melbourne, Australia

    Sam Lewis

  99. School of Physics and Astronomy, University of Manchester, Manchester, UK

    Sam Tygier

  100. Electrical and Computer Engineering, University of Wisconsin–Madison, Madison, WI, USA

    Scott Sievert

  101. Dipartimento di Informatica, Università degli Studi di Milano, Milan, Italy

    Sebastiano Vigna

  102. Inter-University Centre for Astronomy and Astrophysics, Ganeshkhind, Pune, India

    Surhud More

  103. Kavli Institute for the Physics and Mathematics of the Universe, Kashiwa-shi, Japan

    Surhud More

  104. Waymo LLC, Mountain View, CA, USA

    Tadeusz Pudlik

  105. Faculty of Engineering, Niigata University, Nishi-ku, Niigata, Japan

    Takuya Oshima

  106. Virginia Polytechnic Institute and State University, Blacksburg, VA, USA

    Thomas J. Pingel

  107. Aperio Software, Headingley Enterprise and Arts Centre, Leeds, UK

    Thomas P. Robitaille

  108. Independent researcher, Duisburg, Germany

    Thomas Spura

  109. Broad Institute, Cambridge, MA, USA

    Thouis R. Jones

  110. Independent researcher, Gainesville, FL, USA

    Tim Cera

  111. Department of Psychology, Humboldt University of Berlin, Berlin, Germany

    Tiziano Zito

  112. Epiq Solutions, Schaumburg, IL, USA

    Tom Krauss

  113. Max Planck Institute for Software Systems, Kaiserslautern, Germany

    Utkarsh Upadhyay

  114. Department of Psychology and Brain Sciences, Dartmouth College, Hanover, NH, USA

    Yaroslav O. Halchenko

  115. Jacobs School of Engineering, University of California San Diego, La Jolla, CA, USA

    Yoshiki Vázquez-Baeza

Authors

  1. Pauli Virtanen

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  2. Ralf Gommers

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  3. Travis E. Oliphant

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  4. Matt Haberland

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  5. Tyler Reddy

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  6. David Cournapeau

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  7. Evgeni Burovski

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  8. Pearu Peterson

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  9. Warren Weckesser

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  10. Jonathan Bright

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  11. Stéfan J. van der Walt

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  12. Matthew Brett

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  13. Joshua Wilson

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  14. K. Jarrod Millman

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  15. Nikolay Mayorov

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  16. Andrew R. J. Nelson

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  17. Eric Jones

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  18. Robert Kern

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  19. Eric Larson

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  20. C J Carey

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  21. İlhan Polat

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  22. Yu Feng

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  23. Eric W. Moore

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  24. Jake VanderPlas

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  25. Denis Laxalde

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  26. Josef Perktold

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  27. Robert Cimrman

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  28. Ian Henriksen

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  29. E. Một. Quintero

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  30. Charles R. Harris

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  31. Anne M. Archibald

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  32. Antônio H. Ribeiro

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  33. Fabian Pedregosa

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

  34. Paul van Mulbregt

    Xem các ấn phẩm của tác giả

    You can also search for this author in PubMed   Google Scholar

Consortia

SciPy 1. 0 Contributors

  • Aditya Vijaykumar
  • , Alessandro Pietro Bardelli
  • , Alex Rothberg
  • , Andreas Hilboll
  • , Andreas Kloeckner
  • , Anthony Scopatz
  • , Antony Lee
  • , Ariel Rokem
  • , C. Nathan Woods
  • , Chad Fulton
  • , Charles Masson
  • , Christian Häggström
  • , Clark Fitzgerald
  • , David A. Nicholson
  • , David R. Hagen
  • , Dmitrii V. Pasechnik
  • , Emanuele Olivetti
  • , Eric Martin
  • , Eric Wieser
  • , Fabrice Silva
  • , Felix Lenders
  • , Florian Wilhelm
  • , G. Young
  • , Gavin A. Price
  • , Gert-Ludwig Ingold
  • , Gregory E. Allen
  • , Gregory R. Lee
  • , Hervé Audren
  • , Irvin Probst
  • , Jörg P. Dietrich
  • , Jacob Silterra
  • , James T Webber
  • , Janko Slavič
  • , Joel Nothman
  • , Johannes Buchner
  • , Johannes Kulick
  • , Johannes L. Schönberger
  • , José Vinícius de Miranda Cardoso
  • , Joscha Reimer
  • , Joseph Harrington
  • , Juan Luis Cano Rodríguez
  • , Juan Nunez-Iglesias
  • , Justin Kuczynski
  • , Kevin Tritz
  • , Martin Thoma
  • , Matthew Newville
  • , Matthias Kümmerer
  • , Maximilian Bolingbroke
  • , Michael Tartre
  • , Mikhail Pak
  • , Nathaniel J. Smith
  • , Nikolai Nowaczyk
  • , Nikolay Shebanov
  • , Oleksandr Pavlyk
  • , Per A. Brodtkorb
  • , Perry Lee
  • , Robert T. McGibbon
  • , Roman Feldbauer
  • , Sam Lewis
  • , Sam Tygier
  • , Scott Sievert
  • , Sebastiano Vigna
  • , Stefan Peterson
  • , Surhud More
  • , Tadeusz Pudlik
  • , Takuya Oshima
  • , Thomas J. Pingel
  • , Thomas P. Robitaille
  • , Thomas Spura
  • , Thouis R. Jones
  • , Tim Cera
  • , Tim Leslie
  • , Tiziano Zito
  • , Tom Krauss
  • , Utkarsh Upadhyay
  • , Yaroslav O. Halchenko
  •  & Yoshiki Vázquez-Baeza

Contributions

P. V. and R. G. led the development of SciPy for over 10 years. T. E. O. , E. J. and P. P. created SciPy. T. R. and M. H. composed the manuscript with input from others. Các tác giả có tên khác là nhà phát triển cốt lõi của SciPy. Tất cả các tác giả đã đóng góp mã, tài liệu và/hoặc kiến ​​thức chuyên môn quan trọng cho dự án SciPy. Tất cả các tác giả đã xem xét bản thảo

tác giả tương ứng

Thư từ cho Ralf Gommers, Matt Haberland hoặc Tyler Reddy

tuyên bố đạo đức

Lợi ích cạnh tranh

Các tuyên bố sau đây chỉ ra các liên kết trong ngành của các tác giả trong danh sách tác giả chính, nhưng không phải cho các tác giả trong SciPy 1. 0 nhóm cộng tác viên ngoài đó. Những liên kết này có thể đã thay đổi. r. G. đã làm việc cho Quansight LLC. t. E. O. , E. J. và R. K. đã làm việc cho En Thought, Inc. T. E. O. và tôi. H. Đã làm việc tại Anaconda Inc. N. M. đã làm việc cho WayRay LLC. e. W. M. đã làm việc cho Bruker Biospin Corp. F. P. và P. v. M. đã được tuyển dụng bởi Google LLC

Thông tin thêm

Thông tin đánh giá ngang hàng Rita Strack là biên tập viên chính của bài viết này và quản lý quy trình biên tập và đánh giá ngang hàng với sự cộng tác của các thành viên còn lại trong nhóm biên tập

Ghi chú của nhà xuất bản Springer Nature vẫn giữ thái độ trung lập đối với các khiếu nại về quyền tài phán trong các bản đồ đã xuất bản và các tổ chức liên kết

Thông tin bổ sung

Tóm tắt báo cáo

Quyền và quyền

Truy cập Mở Bài viết này được cấp phép theo Creative Commons Attribution 4. 0 Giấy phép Quốc tế, cho phép sử dụng, chia sẻ, điều chỉnh, phân phối và sao chép ở bất kỳ phương tiện hoặc định dạng nào, miễn là bạn cung cấp tín dụng phù hợp cho [các] tác giả gốc và nguồn, cung cấp liên kết đến giấy phép Creative Commons và cho biết . Hình ảnh hoặc tài liệu của bên thứ ba khác trong bài viết này được bao gồm trong giấy phép Creative Commons của bài viết, trừ khi có quy định khác trong hạn mức tín dụng đối với tài liệu. If material is not included in the article’s Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. Để xem bản sao của giấy phép này, hãy truy cập http. //Commons sáng tạo. org/giấy phép/bởi/4. 0/

In lại và Quyền

Về bài viết này

Trích dẫn bài viết này

Virtanen, P. , Gommers, R. , Oliphant, T. E. et al. khoa học viễn tưởng 1. 0. các thuật toán cơ bản cho tính toán khoa học trong Python. Nat Method 17, 261–272 [2020]. https. //doi. tổ chức/10. 1038/s41592-019-0686-2

Máy tính khoa học là gì?

… Điện toán khoa học là tập hợp các công cụ, kỹ thuật và lý thuyết cần thiết để giải quyết các mô hình toán học trên máy tính của các vấn đề trong Khoa học và Kỹ thuật .

Máy tính khoa học được sử dụng để làm gì?

Tính toán khoa học đóng vai trò quan trọng trong công việc khoa học đo lường của NIST. Các kỹ thuật tính toán được sử dụng để nghiên cứu các mô hình toán học của các hiện tượng vật lý cần đo và để tìm các tham số hệ thống tối ưu . Các nhà thực nghiệm sử dụng máy tính để kiểm soát các thí nghiệm và thu thập dữ liệu liên quan.

Ví dụ máy tính khoa học là gì?

Ví dụ cổ điển về điện toán khoa học là dự báo thời tiết . Các nhà khoa học khí quyển và khí tượng học sử dụng các mô hình thời tiết [phương trình toán học] chạy trên các máy tính khá mạnh. Kết quả thường là một lượng lớn dữ liệu [nhiệt độ, áp suất, độ ẩm, v.v. ]

Khóa học tính toán khoa học là gì?

Điện toán khoa học là ứng dụng mạnh mẽ, tập trung vào nghiên cứu của các lý thuyết và phương pháp tính toán để giải quyết các vấn đề khoa học .

Chủ Đề