Tại sao trăn tốt cho khoa học?

Khi các nhà khoa học nhận ra khả năng hỗ trợ công việc của máy tính, có lẽ họ là những người đầu tiên nhiệt tình áp dụng công nghệ này. Khi máy tính ngày càng trở nên phổ biến vào những năm 1950, 1960 và 1970, các nhà khoa học đã tiếp tục sử dụng chúng và phát triển phần mềm để thực hiện các phép tính dài và tự động hóa các hoạt động thu thập dữ liệu tẻ nhạt. Một số lĩnh vực đã được biến đổi nhiều như tinh thể học, thông qua các chương trình cho các phương pháp trực tiếp pha và sàng lọc bình phương nhỏ nhất và thông qua các thiết bị vi tính hóa. Năm mươi năm sau, ý tưởng ghi lại các phép đo trên một máy ghi biểu đồ dải dường như kỳ lạ như việc đi làm bằng xe ngựa

Hiện nay có rất nhiều chương trình phần mềm chuyên dụng cao dành cho nhiễu xạ bột và các học viên cũng sử dụng nhiều công cụ có mục đích chung, chẳng hạn như bảng tính và các gói xử lý văn bản. Trong khi việc sử dụng máy tính và sức mạnh của chúng đã tăng lên trong khoa học, có một điều trớ trêu là ngày càng ít nhà khoa học học các kỹ năng phát triển phần mềm. Đây là một mất mát. Mặc dù các ứng dụng hiện tại có thể hoàn thành khá nhiều, nhưng luôn có những nhiệm vụ đơn giản trong khoa học mà chưa ai lập trình được một cách thuận tiện. Ngoài ra, luôn có những ý tưởng mới nên được thử. Cũng đáng quan tâm là câu hỏi ai sẽ viết thế hệ tiếp theo của phần mềm khoa học? . Do đó, chúng tôi khuyên rằng nhiều nhà khoa học hơn nên học cách lập trình. May mắn thay, không chỉ máy tính trở nên phổ biến mà các kỹ năng cần thiết để học lập trình cũng được đơn giản hóa, ít nhất là với một số ngôn ngữ máy tính cấp cao.

Có rất nhiều ngôn ngữ lập trình, với mỗi ngôn ngữ máy tính đã được thiết kế để lấp đầy khoảng trống về khả năng của các ngôn ngữ tiền nhiệm, nhưng ngay cả như vậy, mọi ngôn ngữ được sử dụng phổ biến đều có ưu điểm và nhược điểm, một số trong số đó sẽ được xem xét dưới đây. Ngay cả các lập trình viên chuyên nghiệp thường có xu hướng chuyên về sử dụng một số ít ngôn ngữ, nhưng vì các nhà khoa học có ít thời gian đầu tư hơn đáng kể nên họ thường thích thành thạo một ngôn ngữ duy nhất có thể đáp ứng càng nhiều nhu cầu càng tốt.

Tính toán khoa học yêu cầu nhiều loại nhiệm vụ được thực hiện kết hợp. người ta cần thực hiện phân tích số hoặc ký hiệu, thường là với gói phần mềm khoa học để tránh phát minh lại bánh xe; . Ngôn ngữ lập trình Python có thể thực hiện tất cả những điều này và hơn thế nữa, do đó đáp ứng những gì các nhà khoa học cần [van Rossum, Tham khảo van Rossum 1998]. Hơn nữa, các tác giả của bài báo này cảm thấy rằng Python là một trong những ngôn ngữ dễ học nhất đối với người mới học, đồng thời là một trong những môi trường lập trình tốt nhất cho các mục đích khoa học, chẳng hạn như tự động hóa, xử lý hình ảnh và phân tích số. Nó cũng cung cấp một môi trường nơi người dùng có thể bắt đầu chỉ với những khả năng đơn giản hơn, nhưng có thể tiến tới sử dụng các tính năng mạnh mẽ hơn, chẳng hạn như lập trình hướng đối tượng, khi các kỹ năng phát triển.

Python cung cấp các khả năng cho hai cách tiếp cận khác nhau đối với điện toán khoa học. "số" so với. hệ thống khoa học “tượng trưng”. Cái trước yêu cầu các công cụ đặc biệt để xử lý dữ liệu số chính xác [e. g. Matlab, Octave, ngôn ngữ R và các ngôn ngữ máy tính cấp cao khác], trong khi ngôn ngữ thứ hai thao tác các biểu thức hoặc phương trình tượng trưng không xác định [e. g. Mathicala và Maple]. Vì tất cả các tính năng này đều có sẵn trong Python nên nó có thể được áp dụng để giải quyết nhiều vấn đề khác nhau. Một người mới bắt đầu có thể dễ dàng học Python để biến ý tưởng của họ thành chương trình một cách nhanh chóng, nhưng nếu cần cho một dự án lớn hơn, họ có thể học cách tạo mã hướng đối tượng, tối ưu hóa mã để tăng tốc và phát triển trực quan khoa học phức tạp với người dùng đồ họa phức tạp.

Hơn nữa, Python là gói phần mềm nguồn mở đa nền tảng được cấp phép theo “Giấy phép Nền tảng Phần mềm Python”, cho phép phân phối miễn phí trình thông dịch. Các chương trình được viết trong đó không phát sinh chi phí cấp phép ẩn. Điều này làm cho nó lý tưởng để sử dụng trong lớp học, cũng như trong phòng thí nghiệm, vì sao chép công việc là nền tảng của phương pháp khoa học. Dưới đây, chúng tôi sẽ giải thích nhiều tính năng của Python và giải thích tại sao nó lại có giá trị như vậy đối với gần như tất cả các khía cạnh của tính toán khoa học, từ chuyển đổi dữ liệu ở định dạng nhanh chóng đến mô hình phù hợp thông qua tự động hóa công cụ và thậm chí cả lý thuyết nguyên tắc đầu tiên. Trước tiên, chúng tôi so sánh Python với một số ngôn ngữ lập trình khác thường được sử dụng trong điện toán khoa học, sau đó trình bày tổng quan ngắn gọn về cú pháp Python

Điều làm cho Python trở nên có giá trị đối với tính toán khoa học không chỉ là cú pháp thân thiện với người mới sử dụng Python mà còn là nhiều gói cho phép hoàn thành nhiều tác vụ lập trình thông thường trong hàng chục dòng mã thay vì hàng trăm hoặc hàng nghìn dòng mã trong các ngôn ngữ khác. Một lần nữa, có hàng ngàn gói như vậy, vì vậy chúng tôi chỉ ra một lựa chọn nhỏ trong số này để làm nổi bật điều gì làm cho Python trở nên có giá trị và hướng người mới đến một số tài nguyên có giá trị nhất. Cuối cùng, vì việc tìm kiếm các tài nguyên để học Python có thể tạo ra vô số kết quả, nhiều kết quả trong số đó có giá trị hạn chế đối với một nhà khoa học, chúng tôi cung cấp một phần [Phụ lục 2] với các đề xuất về nhiều loại tài liệu sư phạm khác nhau để giúp các nhà khoa học tìm hiểu

II. TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH HIỆN ĐẠI

Mặc dù có nhiều ngôn ngữ lập trình khác nhau, nhưng chúng được chia thành ba loại chung và điều quan trọng là phải hiểu được những lợi ích và hạn chế của từng phương pháp. Các ngôn ngữ máy tính gốc như Fortran, Algol, Cobol, cũng như các ngôn ngữ hiện đại hơn, chẳng hạn như C và C+ +, được thông dịch bởi một chương trình lớn khác gọi là trình biên dịch. Đầu ra của quá trình biên dịch được gọi là mã máy, bởi vì nó chứa các hướng dẫn phần cứng thực tế phù hợp với mạch và hệ điều hành của một loại máy tính cụ thể. Một chương trình được biên dịch để chạy trong Windows sẽ không chạy trên máy Linux hoặc Macintosh [có lẽ ngoại trừ trong trình giả lập] và trong một số trường hợp, chương trình được biên dịch cho một phiên bản cụ thể của hệ điều hành sẽ không chạy trên các phiên bản cũ hơn hoặc mới hơn . Sau khi biên dịch lại, mã phải dễ dàng di chuyển giữa các nền tảng máy tính, nhưng trong thực tế, điều này không phải lúc nào cũng đúng. Ưu điểm chính của việc sử dụng trình biên dịch là chúng tạo ra các chương trình mạnh mẽ và hiệu quả nhất, vì chúng tận dụng trực tiếp thiết kế của máy tính và hệ điều hành, nhưng chi phí đầu tư vào học tập nhiều hơn và tiến trình viết mã chậm hơn cho lập trình viên

Các ngôn ngữ lập trình được giải thích đã được phát triển khi máy tính trở nên phổ biến hơn và hiệu quả trở nên ít quan trọng hơn. Trong trường hợp này, một chương trình chính được gọi là trình thông dịch sẽ đọc chương trình sẽ chạy và khi gặp phải mỗi dòng mã, nó sẽ được dịch và các hành động được yêu cầu được thực hiện. Một trong những ngôn ngữ được giải thích sớm nhất là BASIC [khoảng năm 1964], nhưng các ngôn ngữ được giải thích mới hơn bao gồm Perl, Ruby, Tcl/Tk và Python. Các ngôn ngữ này cũng có xu hướng có các hướng dẫn tinh vi cho phép các hành động thường được sử dụng được mã hóa theo cách đơn giản. Điều này có xu hướng làm giảm kích thước của chương trình và đơn giản hóa quá trình viết chúng. Một ưu điểm khác của ngôn ngữ thông dịch là lập trình viên có thể nhập trực tiếp các hướng dẫn riêng lẻ vào trình thông dịch và thử nghiệm kết quả. Hai tính năng này cho phép các chương trình được phát triển với mức nỗ lực tối thiểu. Hầu hết các trình thông dịch được thử nghiệm để hoạt động giống hệt nhau trên nhiều nền tảng máy tính, điều đó có nghĩa là mã chương trình ngôn ngữ được thông dịch thường sẽ chạy giống hệt nhau trên nhiều loại máy tính. Ban đầu, các ngôn ngữ này thường được sử dụng để viết các chương trình đơn giản và ngắn, được gọi là tập lệnh, vì vậy chúng thường được gọi là ngôn ngữ kịch bản

Các ngôn ngữ lập trình thông dịch mang lại một số nhược điểm. Một là trình thông dịch phải được cài đặt trên mỗi máy tính sẽ chạy chương trình. Hơn nữa, các chương trình được giải thích như vậy có xu hướng không chạy hiệu quả như các chương trình trong các ngôn ngữ được biên dịch. Tuy nhiên, tốc độ tính toán thường ít được quan tâm hơn so với thời gian cần thiết để tạo và gỡ lỗi chương trình. Trong những trường hợp tương đối hiếm khi tốc độ là mối quan tâm đáng kể, thường chỉ một phần nhỏ số dòng trong chương trình sẽ ảnh hưởng đến điều này và nhiều ngôn ngữ thông dịch đưa ra các cơ chế để giải quyết các tắc nghẽn này

Loại ngôn ngữ máy tính mới nhất là thứ gì đó kết hợp giữa ngôn ngữ được biên dịch và thông dịch. Một trình biên dịch được sử dụng để chuyển đổi chương trình thành các lệnh đơn giản và tổng quát được gọi là bytecode. Không giống như đầu ra từ trình biên dịch, các hướng dẫn này không dành riêng cho bất kỳ loại phần cứng máy tính nào. Để chạy chương trình, sau khi được chuyển đổi thành mã byte, chương trình thứ hai, được gọi là máy ảo, đọc các lệnh mã byte độc ​​lập với phần cứng này và thực hiện các hoạt động thực tế bằng cách dịch chúng, từng lệnh, sang hệ điều hành và phần cứng thực tế. Do đó, bytecode cũng sẽ chạy trên bất kỳ máy tính nào đã chuyển máy ảo. Java là ví dụ hàng đầu của loại ngôn ngữ này, có sẵn cho nhiều loại phần cứng, bao gồm tất cả các máy tính cá nhân thông thường và ước tính khoảng 109 điện thoại di động trên toàn thế giới. Nó thậm chí còn được tích hợp vào hầu hết các trình duyệt web. Nhu cầu dịch mã byte sang hướng dẫn phần cứng thêm một lớp chi phí, làm giảm hiệu suất thường là trung gian giữa các ngôn ngữ được biên dịch và không được tối ưu hóa. Mã có xu hướng phức tạp và tốn thời gian để viết như mã của các ngôn ngữ được biên dịch, nhưng có lợi thế là mã tuân thủ có xu hướng khá di động, trừ khi các gói dành riêng cho máy được sử dụng để cải thiện tốc độ, đồ họa, v.v. Mặc dù những ngôn ngữ này khá hấp dẫn đối với các tác vụ lập trình chuyên nghiệp, nhưng cần phải có mức độ thành thạo cao hơn trước khi chúng hữu ích cho khoa học và chúng tôi không thể khuyến nghị sử dụng chúng cho mục đích thông thường

III. CÚ PHÁP CỦA PYTHON

Trong các phần sau của bài báo này, chúng tôi sẽ cung cấp một số ví dụ về mã Python để giải thích các khái niệm khác nhau. Độc giả chưa có kinh nghiệm về ngôn ngữ lập trình hoặc muốn xem Python khác với các ngôn ngữ khác như thế nào có thể muốn giới thiệu về cú pháp Python trước khi tiếp tục. Điều này đã được cung cấp như Phụ lục 1. Điều này cũng thảo luận về sự khác biệt giữa truyền thống [Python 2. 7] và mới [Python 3 hoặc 3. phiên bản x]

Như đã lưu ý trước đây, trình thông dịch Python có thể được sử dụng một cách tương tác, do đó, bạn có thể thử các lệnh lập trình bên dưới bằng cách nhập chúng vào cửa sổ lệnh. Trên thực tế, nhiều ví dụ được hiển thị như chúng sẽ xuất hiện nếu được nhập trực tiếp vào trình thông dịch, sử dụng lời nhắc >>> [hoặc for continuation lines]. The same commands can also be placed in a file [sans the prompt characters], saved with the “.py” extension and the entire file can be run as a script.

Trong Phần VII, bên dưới, một cách tiếp cận khác để sử dụng Python tương tác, sử dụng lớp vỏ IPython được trình bày. Khi Python được sử dụng theo cách đó, đầu vào và đầu ra được mở đầu bằng In [1]Out [1] . Các ví dụ cũng được hiển thị ở định dạng đó. [where 1 will be subsequently incremented]. Examples are also shown in that format, as well.

IV. CÁC MÔ-đun VÀ GÓI TRONG PYTHON

Điều làm cho Python trở nên có giá trị đối với khoa học là thư viện mô-đun phong phú giúp mở rộng đáng kể khả năng của lập trình viên để thực hiện các tác vụ khác nhau. Lưu ý rằng nếu chưa có gói có chức năng mong muốn, lập trình viên có thể tạo các mô-đun bổ sung. Các gói có thể được viết bằng ngôn ngữ Python hoặc nếu cần tốc độ hoặc một số chức năng khác, bằng C, C+ + hoặc Fortran

A. Cách nhập gói

Python có một số quy ước đặt tên tiêu chuẩn để nhập các mô-đun gói trong một chương trình. Giả sử chương trình của chúng tôi yêu cầu chúng tôi nhập Pandas, NumPy và một phần của gói Matplotlib. Thông thường, điều này được thực hiện khi bắt đầu chương trình, như bên dưới

nhập numpy nhập gấu trúc dưới dạng pd nhập matplotlib. pyplot dưới dạng plt

Trong trường hợp này, chúng tôi đã xác định các từ viết tắt pdplt to simplify later typing. To use the Pandas read_csv của Pandas, chúng tôi gọi nó là pd. read_csv . Nếu chỉ sử dụng nhập gấu trúc , tham chiếu sẽ cần được tham chiếu là pandas. read_csv . Python cho phép chúng ta loại bỏ việc sử dụng các tiền tố không gian tên này bằng cách sử dụng lệnh from pandas import * , nhưng đây là một cách lập trình rất kém. Tiền tố làm cho người đọc mã hiểu rõ những thói quen nào được xác định trong mô-đun hiện tại so với trong một mô-đun hoặc gói khác. Nếu từnhập * được sử dụng với nhiều gói và các gói này chứa .

B. Các mô-đun tích hợp sẵn

Có hơn 200 mô-đun trong thư viện chuẩn của Python, được gọi là “tích hợp sẵn” vì chúng được phân phối cùng với Python như một phần của quá trình cài đặt cơ bản. Cách tiếp cận “bao gồm pin” này cung cấp chức năng cơ bản mà người ta mong đợi ở bất kỳ ngôn ngữ máy tính hiện đại nào. Ví dụ về điều này bao gồm. mô-đun datetime , được sử dụng để giải thích, so sánh và thao tác với các biểu diễn ngày, giờ và quả địa cầu< . Một số mô-đun cung cấp chức năng tinh vi hơn, chẳng hạn như module which is used to search for files. Some of the modules provide more sophisticated functionality, such as sqlite3 , triển khai cơ sở dữ liệu đơn giản và các mô-đun cho phép Python chạy máy chủ web bằng các lệnh rất đơn giản. Trên mạng có một danh sách đầy đủ các gói cài sẵn [https. // tài liệu. con trăn. org/2/thư viện/]. Một khó khăn với Python là vì có quá nhiều khả năng trong thư viện tiêu chuẩn nên khó có thể xác định được quy trình mà một người cần – và có thể có nhiều cách để hoàn thành một thao tác. Các công cụ tìm kiếm như Yahoo, Google hoặc Bing cũng có thể hữu ích. Một truy vấn chẳng hạn như “Python tìm các phần tử duy nhất trong danh sách” có thể sẽ đưa ra một giải pháp đơn giản, chẳng hạn như lệnh gọi list[set[l]] . l to a set, which only contains each unique element once and then converts the set back to a list, thus eliminating duplicates.

Các nhà khoa học học Python chắc chắn nên đọc các mô-đun xử lý số [https. // tài liệu. con trăn. org/2/library/numeric. html] của tài liệu Python. Các mô-đun này cung cấp các khả năng như hàm lượng giác [nhưng lưu ý rằng gói NumPy, Phần V. A1, cung cấp giải pháp thay thế nhanh hơn cho các hoạt động này trong mảng. ] Các mô-đun tích hợp này cung cấp khả năng tạo số ngẫu nhiên và cũng có thể được sử dụng để thực hiện các phép tính ở mức độ chính xác tùy ý hoặc thậm chí khi các số hữu tỷ được lưu trữ và thao tác dưới dạng phân số chính xác cho phép thực hiện một số loại phép tính nhất định mà không có lỗi làm tròn số

C. Gói bổ trợ Python

Như sẽ được thảo luận dưới đây trong các phần tiếp theo, mối quan tâm lớn của các nhà khoa học là các thư viện và mô-đun “tiện ích bổ sung” khác nhau không phải là một phần chính thức của Python, nhưng bổ sung các tính năng quan trọng. Chúng được viết bởi các cá nhân hoặc nhóm lập trình viên và phải được thêm vào bản cài đặt Python cơ bản. Các mô-đun này thường được nhóm thành các gói đã được viết để giải quyết các nhu cầu cụ thể hoặc mở rộng khả năng của Python. Ví dụ: các gói Python để xử lý số sẽ đơn giản hóa mã hóa và/hoặc tăng tốc các tính toán này. Các gói bổ sung này, chẳng hạn như Python, được phân phối dưới dạng mã nguồn mở và thường có giấy phép không hạn chế. Các gói tiện ích bổ sung của bên thứ ba này mở rộng đáng kể tiện ích của Python, nhưng gây ra sự phức tạp do phân phối riêng biệt của chúng. Một chương trình Python cần các gói bổ trợ yêu cầu một “ngăn xếp” Python phức tạp hơn, vì cả trình thông dịch và [các] gói phải được cài đặt ở bất kỳ nơi nào chương trình Python sẽ được sử dụng

Cần lưu ý rằng mặc dù quá trình chuyển đổi từ Python 2 sang Python 3 được thảo luận trong Phụ lục 1 chỉ yêu cầu những thay đổi nhỏ trong tập lệnh Python [nếu có], nhưng cần có những thay đổi sâu rộng hơn đối với mã được viết bằng ngôn ngữ biên dịch được sử dụng bên trong nhiều gói Python. Điều này đã làm trì hoãn khả năng cung cấp các phiên bản Python 3 của nhiều gói khoa học

D. Trình quản lý gói Python và bản phân phối Linux

Sự phụ thuộc là một vấn đề quan trọng trong bất kỳ môi trường tính toán nào và điều này trở nên phức tạp đối với Python khoa học, một phần là do ngăn xếp khoa học đã phát triển nhiều năm sau khi ngôn ngữ này ra đời. Do đó, hệ sinh thái đóng gói cho Python khoa học hơi lộn xộn và khó hiểu đối với người mới bắt đầu sử dụng ngôn ngữ này, do có nhiều thư viện phụ thuộc lẫn nhau và các phụ thuộc khác. Python cũng có bộ trình quản lý gói riêng được xây dựng riêng để xử lý “địa ngục phụ thuộc” này cho các bản phân phối Python khoa học, với các công cụ được sử dụng phổ biến nhất để cài đặt gói và quản lý phụ thuộc

  • pip [https. //pip. pypa. io/en/latest/] là trình quản lý phụ thuộc và gói chính thức của Python.

  • điều kiện [https. //github. com/conda/conda/] trình quản lý gói nhị phân đa nền tảng, một sản phẩm mã nguồn mở của Continuum Analytics, Inc. [www. sự liên tục. io], đặc biệt thuận tiện.

Giải pháp đơn giản nhất là tìm và cài đặt một bản phân phối của bên thứ ba cung cấp cấu hình Python với tất cả các gói mà người dùng có thể cần. những cái phổ biến nhất là

  • Anaconda [http. // tiếp tục. io/downloads] Lưu ý rằng điều này bao gồm trình quản lý gói conda.

  • Tán cây [https. //www. enthought. com/products/canopy/].

  • Python[x, y] [https. //code. google. com/p/pythonxy/].

Anaconda và Canopy hỗ trợ máy tính Windows, Linux và Macintosh, trong khi Python[x,y] chỉ có bản phân phối cho Windows và Linux

Ngoài ra, hầu hết các bản phân phối Linux đều có chương trình cài đặt phần mềm và thư viện phong phú gồm các gói phần mềm đã được kiểm tra kỹ lưỡng, thường bao gồm nhiều tài nguyên phát triển phần mềm khoa học Python. Trong số các phiên bản Linux phổ biến nhất, Debian và Ubuntu sử dụng “dpkg” [https. //wiki. debian. org/Teams/Dpkg] làm công cụ quản lý gói, trong khi các hệ thống dựa trên vòng/phút như Fedora/RedHat sử dụng “yum” [http. // ngon. bazơ. org] làm công cụ quản lý gói dòng lệnh của họ. Giao diện người dùng dựa trên GUI để chạy dpkg và yum cũng thường được cung cấp

Các công cụ khác cho phiên bản Python và quản lý môi trường là

  • virtualenv [https. //pypi. con trăn. org/pypi/virtualenv] là một công cụ để định cấu hình Python sao cho chỉ một số gói nhất định mới hiển thị. Ví dụ: điều này cho phép thử nghiệm phần mềm với các phiên bản đã chọn của các gói Python khác nhau khi cài đặt nhiều phiên bản.

  • virtualenvwrapper [https. //pypi. con trăn. org/pypi/virtualenvwrapper] là một tiện ích mở rộng trình bao bọc cho virtualenv giúp việc sử dụng nó thuận tiện hơn.

  • pyenv [https. //github. com/yyuu/pyenv] Sử dụng shell [e. g. Bash] để quản lý cài đặt các phiên bản Python khác nhau.

V. KHẢO SÁT CÁC GÓI PYTHON BỔ SUNG ĐƯỢC CÁC NHÀ KHOA HỌC QUAN TÂM

Trang web PyPI [https. //pypi. con trăn. org] cung cấp chỉ mục cho các gói Python được phân phối tự do. Trang web này liệt kê >40 000 gói [. ], nhưng không phải tất cả đều có chất lượng như nhau và nhiều nơi không còn được bảo trì. Đôi khi người ta có thể tìm thấy bằng chứng lịch sử cho các cách tiếp cận song song để giải quyết vấn đề trước khi cộng đồng giải quyết một phương pháp ưa thích. Tuy nhiên, việc tìm kiếm ngay cả một bộ mã không rõ ràng bị bỏ rơi cho một nhiệm vụ cụ thể có thể giúp ích rất nhiều trong việc giải quyết một dự án. Số lượng lớn các gói bên ngoài vừa là lợi ích vừa là gót chân Achilles đối với người dùng Python. Gần như chắc chắn rằng người ta có thể tìm thấy một gói có các thói quen có giá trị cho bất kỳ dự án nào, nhưng sau đó nó phải được cài đặt và nếu phần mềm được phân phối, người dùng sẽ cần phải làm như vậy. Đây là lý do tại sao quản lý gói, như đã mô tả trước đây, trở nên rất có giá trị

Dưới đây chúng tôi thảo luận về một số gói yêu thích của tác giả. Tất cả đều có sẵn trên nhiều nền tảng trên ít nhất là trên tất cả các máy tính thông thường, mặc dù có lẽ không phải trên điện thoại thông minh và máy tính bảng. Tất cả đều được phát miễn phí. Không phải tất cả chúng đều có sẵn cho Python3. x, nhưng điều này có thể thay đổi muộn nhất là vào năm 2015 hoặc 2016

A. Phép tính

Gõ động giúp Python dễ sử dụng hơn C. Nó cực kỳ linh hoạt và linh hoạt, giúp sử dụng hiệu quả thời gian phát triển. Trong những trường hợp cần đến các kỹ thuật tối ưu hóa có sẵn trong C hoặc Fortran, Python cung cấp các móc nối dễ dàng vào các thư viện đã biên dịch. Python cuối cùng trở thành một ngôn ngữ cực kỳ hiệu quả cho nhiệm vụ chung là thực hiện khoa học thông qua phần mềm và là một trong những lý do tại sao việc sử dụng Python trong nhiều cộng đồng khoa học đã liên tục phát triển. Dưới đây chúng tôi thảo luận về một số gói giúp tính toán toán học dễ dàng trong Python

1. NumPy

NumPy là gói nền tảng được sử dụng trong điện toán khoa học với Python. Nó được cấp phép theo giấy phép BSD, cho phép tái sử dụng với một số hạn chế. Trong số các tính năng khác, nó hỗ trợ các thao tác trên mảng lớn, nhiều chiều và ma trận cho phép thao tác với các đối tượng mảng N chiều. Nó cũng cung cấp một thư viện lớn các hàm toán học cấp cao để hoạt động trên các mảng này, bao gồm các hàm quảng bá trên mảng. Các tính năng toán học khác bao gồm hỗ trợ đại số tuyến tính, phép biến đổi Fourier và khả năng số ngẫu nhiên

Cấu trúc dữ liệu mảng “ndarray” hoặc mảng N chiều là chức năng cốt lõi trong NumPy, được sử dụng làm vùng chứa cho nhiều giá trị [van der Walt et al. , Tham khảo van der Walt, Colbert và Varoquaux 2011]. Tuy nhiên, không giống như cấu trúc dữ liệu “danh sách” của Python, tất cả các phần tử trong một ndarray phải có cùng kiểu; .

Để chứng minh sự khác biệt giữa danh sách và ndarray, chúng ta hãy xem xét rằng danh sách Python có thể chứa hỗn hợp nhiều loại dữ liệu khác nhau

>>> list_subject_years = ['Sinh học', 'Vật lý', '. Hóa học', 2011, 2012, 2014]

Ngược lại, một mảng NumPy được gõ. Ở đây, một danh sách các số nguyên lồng nhau được viết lại dưới dạng một mảng float hai chiều [2D]

>>> nhập numpy dưới dạng np >>> convertgf = [[106, 177, 44], [32, 47, 30], [133, 116, 112]] >>> bitmap = np. mảng[convertgf, dtype = float] >>> df = bitmap/255 >>> print[df] [[0. 41568627 0. 45882353 0. 17254902], [ 0. 1254902  0. 18431373 0. 11764706], [ 0. 52156863 0. 45490196 0. 43921569]]]

Lưu ý rằng ở trên, tất cả các phần tử mảng đều được chia tỷ lệ [ bitmap/255 ] trong một thao tác NumPy. Với một danh sách, điều này sẽ yêu cầu một vòng lặp.

Vì NumPy có hỗ trợ tích hợp cho các ndarray được ánh xạ bộ nhớ, nên tất cả các mảng NumPy có thể được xem trong bộ đệm bộ nhớ được cấp phát bởi C/C+ +. Yêu cầu rằng tất cả các mục trong một mảng NumPy có cùng loại cho phép cơ chế truy cập bộ nhớ hiệu quả hơn so với mô hình đối tượng của Python và dẫn đến các phép tính nhanh hơn so với Python cơ bản. Khả năng xác định vùng chứa đa chiều hiệu quả của dữ liệu chung cùng loại trên nhiều cơ sở dữ liệu khác nhau đảm bảo tính di động của dữ liệu, một yêu cầu chính đối với các dự án khoa học lớn. Tuy nhiên, mặc dù các mô-đun vector hóa hoạt động của NumPy và gọi mã được biên dịch, NumPy vẫn có thể chậm hơn nhiều so với các ngôn ngữ hiện đại khác như Julia và thậm chí cả Fortran và C được tối ưu hóa

a. Thực hiện tính toán hiệu quả với NumPy

NumPy cho phép thực hiện một số tính toán chuyên sâu về mặt tính toán với tốc độ tương đương với tốc độ của mã Fortran hoặc C [và đôi khi vượt quá chúng, vì bản thân các quy trình NumPy thường được tối ưu hóa cao]. Làm điều này yêu cầu viết các phép tính số theo cách giảm thiểu vòng lặp, trong đó mỗi lệnh gọi hàm NumPy sẽ xử lý càng nhiều giá trị càng tốt, thường sử dụng đại số tuyến tính và đôi khi mở rộng thành các mảng có 3, 4 hoặc nhiều chiều hơn

Để làm ví dụ về cách thức hoạt động của tính năng này, chúng ta hãy tính toán một phần của phương trình nhân tố cấu trúc

$${F_{hkl}}=\sum {{\,f_j}\exp \lsqb 2\pi i\lpar h{x_j}+k{y_j}+l{z_j}\rpar \rsqb }$$

Để đơn giản hóa điều này một chút, chúng ta có thể giả sử một tâm đối xứng, sao cho F hkl đều là số thực và f j giống nhau đối với mọi nguyên tử và sẽ bị bỏ qua. Sau đó chúng tôi nhận được

$${F_{hkl}}=\sum {\cos \lsqb 2\pi \lpar h{x_j}+k{y_j}+l{z_j}\rpar \rsqb }$$

Chúng tôi sẽ xác định trong Python các phản xạ dưới dạng danh sách lồng nhau của các giá trị hkl, [[h 1 k 1 l 1], [h 2 k 2 l 2],,…] chẳng hạn như

ref = [[1,0,0], [0,1,0], [0,0,1], [1,1,0], [0,1,1], [0,1,0]

so ref[j] là [h j ,k j ,l j ] và ref [j][i] is h j , k j , or l j , for i = 0, 1, or 2, respectively. Likewise, we can define a nested list for atom coordinates, where atom[j] là [x j , y j , z j ] và atom [j][i] is x j , y j , or z j for i = 0,1, or 2, respectively:

nguyên tử = [[0,0. 5,0. 5], [0. 5,0,0. 5], [0. 5,0. 5,0], [0. 5,0. 5,0. 5]]

The simplistic way to compute a list of F hkl values would then be to directly translate the mathematical formula for F hkl to Python, as one might write C or Fortran code with a doubly nested loop

>>> nhập toán >>> atom = [[0,. 5,. 5], [. 5,0,. 5],[. 5,. 5,0], [. 5,. 5,. 5]] >>> ref = [[1,0,0], [0,1,0], [0,0,1], [1,1,0], [0,1,1], [ . …    s = 0 …    đối với j2 trong phạm vi[len[atom]]. …    c = 0 …     cho i trong phạm vi[3]. …        c +=  ref[j1][i] * nguyên tử[j2][i] …   s +=  toán. cos[2 * toán. pi*c] …    F. append[s] … >>> F [-2. 0, -2. 0, -2. 0, 0. 0, 0. 0, -2. 0, 2. 0]

This works, but to show how this same computation can be done without any loops using NumPy, we can repeat this as a matrix computation. Lưu ý rằng chúng ta có thể truyền danh sách lồng nhau, atomref , vào . Lưu ý rằng phần tử hình cung cấp cho chúng tôi kích thước, [4 × 3] và [7 × 3].

>>> np. mảng [nguyên tử] mảng [[[0. , 0. 5, 0. 5],     [0. 5, 0. , 0. 5],     [0. 5, 0. 5, 0. ],     [0. 5, 0. 5, 0. 5]]] >>> np. mảng [nguyên tử]. shape [4, 3] >>> np. mảng[ref] mảng[[[1, 0, 0],     [0, 1, 0],     [0, 0, 1],     [1, 1, 0],     [0, 1, 1],     [0, . mảng [tham khảo]. hình dạng [7, 3]

The contents of the innermost loop, above, above computes an interior product, where each row of the two arrays are multiplied and then are summed. Điều này có thể được thực hiện với np. inner[] , tạo ra một mảng [7,4] trong một lần gọi.

>>> np. mảng bên trong [ref, nguyên tử] [[[0. , 0. 5, 0. 5, 0. 5],     [0. 5, 0. , 0. 5, 0. 5],     [0. 5, 0. 5, 0. , 0. 5],     [0. 5, 0. 5, 1. , 1. ],     [1. , 0. 5, 0. 5, 1. ],     [0. 5, 0. , 0. 5, 0. 5],     [1. , 1. , 1. , 1. 5]]]

Lưu ý rằng np. inner[] yêu cầu hai ndarray làm đầu vào, nhưng sẽ chuyển các danh sách lồng nhau của chúng tôi sang dạng đó. [Chúng tôi có thể tránh điều đó bằng cách thực hiện chuyển đổi một cách rõ ràng bằng cách sử dụng np. inner[np. mảng [ref], np. mảng [nguyên tử]] . ]

Tích bên trong này nhân với tập tọa độ đầu tiên, [0. ,0. 5,0. 5] , theo phản xạ đầu tiên, [1,0,0] , từng phần tử một và sau đó thêm . Sau đó, tọa độ nguyên tử thứ hai, [0. ,0. 5,0. 5] , are multiplied by the same hkl value, [yielding 0. 5] cho số hạng thứ hai ở hàng đầu tiên [v.v.]. Sau đó, chúng ta có thể dễ dàng nhân mọi phần tử trong ma trận từ np. inner[] nhân 2 và π và lấy cosin của mỗi số hạng.

>>> np. cos[2. * np. pi * np. mảng bên trong [ref, nguyên tử]] [[[1. , -1. , -1. , -1. ],     [-1. , 1. , -1. , -1. ],     [-1. , -1. , 1. , -1. ],     [-1. , -1. , 1. , 1. ],     [1. , -1. , -1. , 1. ],     [-1. , 1. , -1. , -1. ],     [1. , 1. , 1. , -1. ]]]

Lưu ý rằng hàm cos[] mô-đun toán học tiêu chuẩn chỉ có thể tính toán một giá trị tại một thời điểm, trong khi hàm tương ứng trong NumPy có thể xử lý . In fact, np. cos[] hoàn toàn có thể thay thế math. cos[] .

Cuối cùng, chúng tôi muốn tính tổng nội dung của mỗi hàng, điều này có thể được thực hiện với np. sum[, axis = 1] , trong đó 1 đề cập đến thứ nguyên mảng thứ hai [vì Python sử dụng phương thức 0 .

Sử dụng cách tiếp cận này, chúng ta có thể giảm ví dụ trước xuống còn năm dòng mã, nhưng tất cả các tính toán được thực hiện trong một dòng duy nhất

>>> atom = [[0,. 5,. 5], [. 5,0,. 5],[. 5,. 5,0], [. 5,. 5,. 5]] >>> ref = [[1,0,0], [0,1,0], [0,0,1], [1,1,0], [0,1,1], [ . tổng [np. cos[2. * np. pi * np. inner[ref,atom]], axis = 1] >>> F array[[-2. , -2. , -2. , 0. , 0. , -2. , 2. ]]

Với số lượng nhỏ các giá trị được sử dụng ở trên, quá trình tính toán này mất một lượng thời gian không đáng kể, nhưng với nhiều nguyên tử và phản xạ hơn, điều này không đúng. Điều này đã được chứng minh bằng cách lặp lại điều trên với 500 nguyên tử và 5000 phản xạ. Sau đó, quá trình tính toán sử dụng phương pháp mã hóa đầu tiên cần 37 giây để hoàn thành, trong khi phương pháp thứ hai, với một dòng mã NumPy được tối ưu hóa duy nhất, chỉ cần 0. 1 s

2. SciPy

SciPy [http. //www. scipy. org/scipylib/] là một gói được xây dựng dựa trên và phân phối cùng với NumPy. It contains a wide variety of numerical analysis routines, such as real and complex Fourier transforms, integration, interpolation, image processing, and optimizers. It is used widely in fields ranging from electrical engineering through bioinformatics and oceanography and even finance

SciPy has some nifty advanced features like “sparse matrices” – an almost empty matrix storing only non-zero items. Lưu trữ các số không là một sự lãng phí tài nguyên và việc tính toán có thể được đơn giản hóa bằng cách chỉ xử lý các phần tử khác không. SciPy also has routines for. image manipulation, image filtering, object properties [segmentation], and feature extraction [edge detection]

3. Numba

Numba [http. // tê liệt. pydata. org] là trình biên dịch mã nguồn mở tối ưu hóa cho Python, được tài trợ bởi Continuum Analytics, Inc. Nó bổ sung tính năng biên dịch tức thời cho Python, nghĩa là khi cần tính toán được chỉ định trước tiên, trình biên dịch sẽ tạo mã máy được tối ưu hóa cụ thể cho máy tính đang được sử dụng hiện tại. Nó tích hợp với NumPy và cung cấp khả năng cho các phần yêu cầu tính toán của chương trình được gửi đến phần cứng chuyên dụng [chẳng hạn như GPU]. Do đó, nó tích hợp với ngăn xếp phần mềm khoa học Python cũ hơn để đảm bảo tính di động của mã và thường cung cấp hiệu suất tương đương hoặc vượt trội so với mã hóa C, C+ + và Fortran truyền thống

Numba sử dụng hai mã đặc biệt được gọi là trình trang trí, “@jit” và “@autojit” để tăng tốc độ biên dịch và tối ưu hóa hiệu suất. Trình trang trí jit trả về một phiên bản đã biên dịch của hàm bằng cách sử dụng các loại đầu vào và loại đầu ra của hàm. Trình trang trí autojit không cần thông số kỹ thuật loại. It watches the types called by the function and infers the type of the return. Khi mã được biên dịch trước đó tồn tại, nó được sử dụng lại. Nếu không, nó tạo mã máy cho chức năng và sau đó thực thi mã đó

4. Scikit-learning

Scikit-learning [http. //scikit-learn. org] là gói học máy được viết bằng Python. Machine learning is a form of artificial intelligence for pattern recognition, where the software generates rules to classify information by being “trained” on input datasets that have already been classified. Ví dụ: phân cụm k-means là một thuật toán phổ biến để khai thác dữ liệu từ tài liệu văn bản. Another example of the clustering technique in machine learning is “unsupervised learning”, which tries to create structure within unlabeled data, where no pre-defined datasets are used. Scikit-learn was developed as an extension to SciPy

5. Sympy

SymPy [http. // sympy. org/en/] is a module for performing symbolic mathematics. Hầu hết các tính toán khoa học được thực hiện bằng số, e. g. trong đó các phương trình được đánh giá với các giá trị cụ thể. With symbolic processing, such as is implemented in Mathematica and Maple, the equations themselves are manipulated. Thus, SymPy can determine that the derivative of sin[x] with respect to x is cos[x]. Điều này được thực hiện trực tiếp trên biểu thức và không sử dụng bất kỳ giá trị số nào cho x

6. Theano

Theano [http. //học kĩ càng. net/software/theano/] is another Python library for efficiently computing mathematical expressions involving multi-dimensional arrays. Most importantly, it has tight integration with NumPy, with dynamic C code generation support that allows faster expression evaluation. It supports symbolic differentiation and offers optimization and extensive unit testing

Theano sử dụng các cấu trúc đồ thị để xác định tất cả các quan hệ toán học bằng cách sử dụng các trình giữ chỗ tượng trưng được gọi là "Biến", là các khối xây dựng cấu trúc dữ liệu chính. Theano has strict typing constraints to allow it to tailor C code to statically optimize the computation graph. Variables can be an instance of a NumPy ndarray, or an array of 32-bit integers [“int32”] or have a shape of 1 × N. Phát sóng là một tính năng tồn tại trong NumPy, nhưng chủ yếu dành cho vô hướng và mảng. Theano mở rộng phát sóng cho các trường hợp kích thước được thêm vào một mảng. Another feature of Theano is the different types of computational optimizations that can be performed globally or locally

B. Gói xử lý dữ liệu lớn

Thuật ngữ "Dữ liệu lớn" được sử dụng để tính toán liên quan đến các tập hợp thông tin rất lớn, thường là quá lớn để vừa với bộ nhớ của một máy tính. Ví dụ, trong nhiễu xạ, các thí nghiệm liên quan đến số lượng lớn hình ảnh máy dò khu vực có thể đạt tới quy mô hàng terabyte

1. Gấu trúc

Pandas [http. //gấu trúc. pydata. org] là một thư viện thao tác phân tích dữ liệu mạnh mẽ dành cho Python, cung cấp một công cụ dễ dàng để làm việc với các cấu trúc dữ liệu đa chiều [McKinney, 2012]. Tài liệu có sẵn trực tuyến [http. //pandas. pydata. org/pandas-docs/ổn định/]

Các phép toán ma trận thường được sử dụng trong tính toán khoa học và Pandas sử dụng cấu trúc dữ liệu “DataFrame”, giúp dễ dàng làm việc với dữ liệu được lưu trữ trong cơ sở dữ liệu quan hệ, tệp dữ liệu văn bản hoặc bảng tính, chẳng hạn như tệp Excel [giá trị được phân tách bằng tab hoặc dấu phẩy], . DataFrame về cơ bản là một "mảng 2D" với các hàng và cột dữ liệu, chẳng hạn như bảng tính

Creating a DataFrame from an original set of records is simple, and as an example, we use some financial data for General Electric [GE] stock that has been uploaded to a git repository [https. //gitlab. com/aleph-omega/stockex-usa] để dễ tham khảo. [Lưu ý các file này có dung lượng khá lớn. ]

To show how adept Pandas is at accessing “spreadsheet” data, below we read data from the file into a DataFrame object using pandas. read_table để lập bảng ở dòng thứ hai. Dòng tiếp theo cắt qua DataFrame để lấy 11 bản ghi đầu tiên

Trong 1]. import pandas as pd     df = pd. read_csv['. /Aleph-Omega/stockex-usa/GE-1990-2014-stocks. csv']     df = df[. 11]     print[df] Out [1]. Ngày    Mở  Cao  Thấp  Đóng  Điều chỉnh âm lượng Đóng     2014-07-03 26. 81 26. 89 26. 78 26. 86 20513900 26. 86     2014-07-02 26. 35 26. 65 26. 34 26. 61 21246500 26. 61     2014-07-01 26. 27 26. 50 26. 26 26. 40 28054100 26. 40     2014-06-30 26. 44 26. 45 26. 22 26. 28 29661100 26. 28     2014-06-27 26. 29 26. 43 26. 23 26. 43 35155200 26. 43     2014-06-26 26. 46 26. 46 26. 20 26. 29 23159000 26. 29     2014-06-25 26. 47 26. 51 26. 34 26. 42 26261200 26. 42     2014-06-24 26. 66 26. 88 26. 51 26. 58 26418900 26. 58     2014-06-23 27. 05 27. 06 26. 60 26. 68 31217700 26. 68     2014-06-20 27. 02 27. 04 26. 87 26. 97 49734400 26. 97     2014-06-19 26. 66 26. 98 26. 66 26. 93 31605200 26. 93     [11 rows x 7 columns]

Hơn nữa, Pandas rất xuất sắc trong việc quản lý bộ nhớ, điều này rất quan trọng để xử lý Dữ liệu lớn. Tính năng “groupby” đặc biệt hữu ích và có thể giảm độ dài của các tập lệnh Python theo một mức độ lớn hơn so với những gì được yêu cầu với các ngôn ngữ khác. Chúng tôi có thể đạt được điều này bằng cách chia dữ liệu của mình thành các nhóm nhỏ hơn, dựa trên các tiêu chí được xác định trước, sau đó bằng cách viết các hàm sẽ được áp dụng riêng cho từng nhóm với đầu ra được kết hợp thành một khung dữ liệu

Pandas tăng tốc độ tính toán, cũng như cho phép mã hóa nhanh và bảo trì mã được cải thiện, vì việc thể hiện một chế độ phân tích với ít dòng mã hơn sẽ dễ dàng hơn nhiều. Since operations such as merges, sorts, groupings, and creating new variables are performed within the package, in compiled and optimized machine code, the speed gain can be tremendous

2. Ngọn lửa

Blaze [http. //blaze. pydata. org] là một cơ chế để xây dựng các cấu trúc dữ liệu phức tạp hơn trong khuôn khổ của NumPy và xây dựng trên Pandas. Although the ndarray in NumPy requires arrays to have fixed lengths along each dimension, Blaze allows for much more complex structures. Nó cũng sử dụng tính năng biên dịch tức thời, như được sử dụng trong Numba, để tăng tốc độ tính toán. Blaze is a fairly recent project, also sponsored by Continuum Analytics, Inc

C. Thống kê

Statistical capabilities are available in some of the previously discussed packages, but the packages described here are specifically designed for statistical analysis

1. PyMC

PyMC [http. //pymc-devs. github. com/pymc/] is a Python module for Bayesian statistical modeling and model fitting that focuses on advanced Markov chain Monte Carlo fitting algorithms, fitting sampling algorithms [such as Hamiltonian Monte Carlo], numerical optimization, and also for solving unconstrained non-linear optimization problems. Its flexibility and extensibility make it applicable to a large suite of problems

2. Mô hình thống kê

Mô hình thống kê [https. //github. com/statsmodels/statsmodels] is a Python library package for econometrics, plotting functions, statistical modeling, and tests, which provides a complement to SciPy for statistical computations, including descriptive statistics, and estimation and inference for statistical models. Các nhà nghiên cứu có thể khám phá dữ liệu, ước tính các mô hình thống kê, thực hiện các bài kiểm tra thống kê và sử dụng dữ liệu đó để tính toán thống kê và phân tích dữ liệu bằng Python. Statsmodels chạy trên Python 2. 5 through 3. 2 phiên bản và một số tính năng hữu ích mà nó hỗ trợ là

  • Linear regression models

  • Các mô hình tuyến tính tổng quát

  • Các mô hình lựa chọn rời rạc

  • Robust linear models

  • Nhiều mô hình và hàm để phân tích chuỗi thời gian

  • Non-parametric estimators

  • Tập hợp các tập dữ liệu làm ví dụ

  • Nhiều thử nghiệm thống kê

  • Các công cụ đầu vào-đầu ra để tạo bảng ở một số định dạng [văn bản, LaTeX, HTML] và để đọc tệp trong NumPy và Pandas

  • Vẽ đồ thị hàm

  • Extensive unit tests to ensure correctness of results

  • Many more models and extensions in development.

D. Các gói trực quan hóa và xử lý hình ảnh trong Python

Python excels at the graphical display of data, which is an important aspect of scientific analysis. Hiển thị đồ họa có thể được tách thành hai loại. 2D representations and pseudo-three-dimensional [3D] ones. In the case of 3D, objects are portrayed as viewed from a particular direction, but that direction can usually be manipulated interactively. Điều này cho phép bộ não của người xem diễn giải hình ảnh đại diện như thể một vật thể thực tế đã được nhìn thấy.

Một nhiệm vụ tính toán liên quan là giải thích và biến đổi hình ảnh kỹ thuật số. Some capabilities for image processing can be found in SciPy [5. 1. 2], nhưng các khả năng phức tạp hơn cũng được thảo luận bên dưới

1. Matplotlib

Matplotlib [http. //matplotlib. org/] là một thư viện đồ họa 2D khoa học bao gồm một giao diện lập trình tạo biểu diễn đồ họa véc-tơ và hiển thị nó để hiển thị đầu ra [Hunter, Reference Hunter 2007]. Ưu điểm của đồ họa vector là các ô kết quả có thể được hiển thị với chất lượng rất cao, như có thể được sử dụng cho một bài báo hoặc bài thuyết trình. Matplotlib cũng có thể được sử dụng một cách tương tác để vẽ kết quả, chẳng hạn như kết quả có thể sử dụng trong môi trường bảng tính. Các lệnh Matplotlib đơn giản có thể được sử dụng để tạo đồ họa dễ dàng. Như một ví dụ về cách sử dụng Matplotlib đơn giản như thế nào, trong ví dụ mã sau, NumPy được sử dụng để tính toán một mảng gồm 500 điểm trong phạm vi từ 0. 0 đến 6π và sau đó một mảng mới được tạo có chứa sin của từng giá trị trong mảng trước đó. Finally, the a plot is generated, where the x-axis is the first plot, but indicated in units of π and the y-axis shows the sine values.

>>> nhập numpy dưới dạng np >>> nhập matplotlib. pyplot dưới dạng plt >>> x = np. linspace[0,6*np. pi,500] >>> y = np. tội lỗi[x] >>> plt. cốt truyện [x/np. pi,y] >>> plt. buổi bieu diễn[]

The resulting plot, as it appears on the screen, is shown in Figure 1. Lưu ý rằng ngay cả với lệnh vẽ đồ thị rất đơn giản này, đồ thị kết quả vẫn khá đầy đủ tính năng. The icons at the upper left allow the plot to be repositioned in the window, including “zooming”, and the plot can be saved as a higher resolution bitmap file. At the bottom, the position of the cursor is displayed as it is moved around in the window

Hình 1. [Color online] An example of simple screen graphics from the Matplotlib package, generated with a simple command. Lưu ý rằng cốt truyện có thể được thay đổi và phóng to. Ngoài ra, vị trí con trỏ được chỉ định.

The Matplotlib package is also very well suited for creation of sophisticated graphics and readers are recommended to look at the web gallery [http. //matplotlib. tổ chức/bộ sưu tập. html] of very complex and beautifully formatted sample Matplotlib graphs and the corresponding [usually quite simple] example code to see what can be done with Matplotlib

Cũng có thể sử dụng Matplotlib cho các ứng dụng tương tác, nơi người dùng có thể tương tác với đồ họa thông qua nhấp chuột và bàn phím. Tuy nhiên, điều này không phải lúc nào cũng được thực hiện một cách thuận tiện như mong muốn.

2. Chaco

Chaco [http. //code. say mê. com/projects/chaco/] is another scientific graphics library intended more for display than creation of “hard-copy” plots – it generates attractive static 2D plots. Mặc dù nó cũng hoạt động tốt để khám phá và trực quan hóa dữ liệu tương tác, nhưng nó không cung cấp tất cả sự tinh vi của Matplotlib, nhưng nó khá dễ sử dụng

3. Bokeh

Bokeh [http. //bokeh. pydata. org] is an interactive visualization library for Python and other languages for making powerful graphical presentations. Với đồ họa cạnh tranh với D3 được sử dụng rộng rãi. js JavaScript library, it delivers good performance with large datasets, but is integrated with Python. Nó hoạt động tốt với IPython Notebook. Bokeh tương thích với Matplotlib. With it, programmers can easily create applications to deliver high-performance interactive visualization of large datasets

4. Mayavi

Mayavi [http. //mã số. enthought. com/projects/mayavi/] is a toolkit for 3D visualization of scientific data in Python, a part of the Enthought Tool Suite [ETS]. Dữ liệu được vẽ trong Mayavi tương ứng với các đối tượng 3D có thể được “xoay” trên màn hình máy tính, cho phép mọi người hiểu rõ hơn về bản chất 3D của thông tin được hiển thị. Mayavi được xây dựng dựa trên VTK rất tinh vi [ http. //www. vtk. org/], cũng cung cấp giao diện Python. Đồ họa hiển thị 3D tương tác được thực hiện bằng giao thức phần cứng/phần mềm kết hợp được gọi là OpenGL. Ngoài ra, đồ họa tương tác hiệu suất rất cao có thể được thực hiện bằng Python với việc sử dụng trực tiếp các lệnh gọi OpenGL thông qua việc sử dụng PyOpenGL [http. //pyopengl. nguồn. net/], nhưng điều này khó hơn đáng kể và không được khuyến nghị cho hầu hết các mục đích sử dụng

5. Hình ảnh Scikit

Scikit-hình ảnh [http. //scikit-image. org] là một mô-đun máy học được xây dựng trên SciPy dành riêng cho xử lý hình ảnh [xem scikit-learning, ở trên], Mã nguồn [https. //github. com/scikit-learning/scikit-learning]

6. PIL/gối

PIL [http. //www. phần mềm trăn. com/products/pil] là Thư viện hình ảnh Python. This contains routines for reading and processing images. This library is a simple and useful tool for those starting out with image manipulation to learn the basics. Tuy nhiên, nó đã không được cập nhật trong một số năm và hỗ trợ cho Python 3. x không được lên kế hoạch. Hence, a fork-called pillow [https. //pypi. python. org/pypi/Pillow/] was developed to enhance PIL. Hai dự án sau đó được tích hợp vào một cơ sở mã duy nhất, do đó các gói phần lớn có thể hoán đổi cho nhau

Để làm ví dụ về cách sử dụng gói này, chúng tôi sẽ đọc một tệp hình ảnh khá nổi tiếng từ Wikipedia và thực hiện một số bước xử lý đơn giản

Trong 2]. # truy xuất hình ảnh trên miền công cộng và ghi cục bộ dưới dạng tệp     nhập urllib2     URL =  'http. //tải lên. wikimedia. org/wikipedia/commons/thumb/e/ec/Mona_Lisa%2C_by_Leonardo_da_Vinci%2C_from_C2RMF_retouched. jpg/402px- Mona_Lisa%2C_by_Leonardo_da_Vinci%2C_from_C2RMF_retouched. jpg'     fp = open['Mona. jpg','w']    fp. viết [urllib2. urlopen[URL]. read[]]     fp. gần[]

Các lệnh này đọc và hiển thị hình ảnh, sau đó chuyển đổi nó thành đen trắng

Trong 3]. # đọc và hiển thị tệp hình ảnh      nhập PIL. Image as Image      nhập matplotlib. pylab as plt      mona = Image. mở ['Mona. jpg']      plt. imshow[mona] In [4]. # use the PIL to create a black and white version of the image      import PIL. ImageEnhance là Nâng cao    enhancer = Nâng cao. Màu[mona]      bw_mona= chất tăng cường. nâng cao[0]    plt. imshow[bw_mona]

Chúng tôi có thể kiểm tra tệp hình ảnh. Trong kết quả bên dưới, thuộc tính định dạng cho chúng ta biết đây là hình ảnh JPEG trong khi kích thước gives us the image width and height in pixels. Finally, the mode cung cấp loại pixel và độ sâu.

Trong [5]. print[mona. format, mona. kích thước, đơn vị. chế độ] JPEG [402, 599] RGB

PIL cho phép hình ảnh được chuyển đổi giữa các biểu diễn pixel khác nhau, vì vậy chúng tôi sẽ sử dụng phương thức convert[] để chuyển đổi thuộc tính chế độ trên . Đầu ra từ này được hiển thị như Hình 2. Ở đây, mỗi pixel được tô màu theo giá trị độ sáng bằng cách sử dụng thang màu tùy ý để hiển thị các giá trị [thang này có thể dễ dàng thay đổi].

Trong [6]. # hiển thị dưới dạng độ chói      trong = Hình ảnh. mở ["Mona. jpg"]. convert[“L”]       plt. imshow[im]

Thư viện hình ảnh Python [PIL] không chỉ có thể được sử dụng để thực hiện các thao tác với hình ảnh mà còn có thể xuất hình ảnh dưới dạng ndarrays, do đó có thể thực hiện các phép tính Numpy và Scipy trên chúng

Hình 2. [Màu trực tuyến] Hình ảnh đã được đổi màu để hiển thị độ sáng của từng pixel theo ánh xạ màu Matplotlib.

E. Python for instrument automation

Tính phổ biến của máy tính trong khoa học mở rộng sang thiết bị đo đạc; . Other instruments have sophisticated automation to the point of allowing remote or even unattended operation. Python is an excellent choice for automating instruments, since it can support libraries that will perform the low-level communication with instrument hardware and also higher-level computation and graphics. Likewise, it is also relatively easy to create high-quality graphical user interfaces or web applications for eventual user control. Để Python điều khiển một thiết bị khoa học, cần có trình điều khiển thiết bị triển khai [các] giao thức truyền thông tới thiết bị điện tử của thiết bị. Đối với các giao thức truyền thông phổ biến, chẳng hạn như thiết bị RS-232 [http. // pyserial. nguồn. net/] hoặc EPICS [http. //xe9. uchicago. edu/software/python/pyepics3/] tồn tại các thư viện giao tiếp tiêu chuẩn. If a vendor provides a function library, such as a Windows “. DLL” hoặc Linux “. so”, mô-đun ctypes trong thư viện chuẩn Python có thể được sử dụng để truy cập các chức năng đó

Thực tế là mã Python có thể được thực thi một cách tương tác giúp đơn giản hóa rất nhiều việc tạo giao diện lập trình ứng dụng. Ví dụ, máy đo nhiễu xạ bột có độ phân giải cao nhất và năng suất cao nhất ở Hoa Kỳ, thiết bị 11-BM tại Nguồn Photon Nâng cao Argonne, được tự động hóa hoàn toàn bằng Python [Toby et al. , 2009]. Một đoạn phim [http. //youtube. be/86TZpk_Tn1M] đang trực tuyến. Thư viện điều khiển các động cơ thích hợp, điều phối việc sử dụng rô bốt và thiết bị phụ trợ, chẳng hạn như để kiểm soát nhiệt độ mẫu, ban đầu được phát triển bằng cách nhập các lệnh vào trình thông dịch Python và sau đó thu thập mã hoạt động. Kết quả là một thư viện gồm ~3000 dòng mã và nhận xét, cung cấp các quy trình khởi tạo và điều khiển thiết bị, tải hoặc dỡ mẫu hoặc đọc mã vạch của mẫu, đặt nhiệt độ, thực hiện quét thu thập dữ liệu, v.v. Từ thời điểm đó, việc phát triển các quy trình truy vấn cơ sở dữ liệu công cụ để biết chi tiết về việc thu thập dữ liệu cho từng mẫu, tối ưu hóa trình tự thu thập dữ liệu và sau đó thực hiện quét thực tế là tương đối đơn giản và chỉ cần thêm 1000 dòng Python đã nhận xét nữa. Cuối cùng, ~1000 dòng mã khác đã được sử dụng để phát triển giao diện người dùng đồ họa cho phép người vận hành tinh chỉnh các tham số thu thập dữ liệu. Phần mềm kết quả có thể chạy thiết bị trong nhiều ngày mà không cần giám sát;

VI. GIAO DIỆN NGƯỜI DÙNG ĐỒ HỌA

Các nhà khoa học ngày càng mong muốn tạo ra các chương trình có giao diện người dùng đồ họa [GUI] – các ứng dụng hiển thị trong cửa sổ và có các nút và menu được sử dụng để kiểm soát việc thực thi chương trình. Python có gói GUI tích hợp, Tkinter, trong thư viện tiêu chuẩn của nó, nhưng việc sử dụng gói này không được khuyến khích, vì nó là phiên bản ghép của ngôn ngữ Tcl/Tk, khá vụng về khi sử dụng trong Python. Ngoài ra, GUI kết quả có hình thức khá cổ

Hai gói C++ đa nền tảng được sử dụng rất rộng rãi, wxWidgets [http. //www. wxwidget. tổ chức/] và Qt [http. //qt-dự án. org/] [phát âm là “dễ thương”] có các thư viện Python được sử dụng rộng rãi. Qt được nhà sản xuất điện thoại di động Nokia phát triển và phát hành để truy cập mở, mới hơn và dường như đang thu hút nhiều sự chú ý hơn hiện nay. Gói Python thay thế wxWidgets đã được sử dụng khá lâu và có lượng người dùng lớn. Mỗi cái sẽ được thảo luận dưới đây

Cần lưu ý rằng bất kể gói nào được chọn, lập trình GUI yêu cầu thay đổi mô hình lập trình. Phần mềm truyền thống thường được viết theo kiểu tuyến tính, nơi chương trình bắt đầu, đọc một số đầu vào, tạo ra một số kết quả và dừng lại. Các chương trình dựa trên GUI được điều khiển theo sự kiện, có nghĩa là chúng thực hiện một loạt các khởi tạo khi khởi động và sau đó chuyển sang chế độ ngủ đông [trong một vòng lặp sự kiện] và từ thời điểm đó chỉ phản hồi các hành động của người dùng như nhấp chuột, từ đó bắt đầu “gọi lại . Hầu hết mã được đặt trong các quy trình sẽ chỉ được kích hoạt thông qua các quy trình gọi lại này. Một chương trình GUI thường sẽ chỉ dừng khi một thói quen gọi lại kết thúc chương trình

Một cách tiếp cận khác để tạo GUI cho phần mềm là cung cấp quyền truy cập vào nó từ trình duyệt web. Đây thường không phải là phương pháp được lựa chọn cho các giao diện rất tinh vi, nhưng lại có hiệu quả đáng ngạc nhiên đối với nhiều tính toán khoa học. Python có một số khung ứng dụng web trưởng thành, chẳng hạn như Django [https. //www. djangoproject. com/], có sẵn để xây dựng các trang web. Như một ví dụ về khả năng của Python cho các ứng dụng web, phần lớn mã được sử dụng để chạy trang web YouTube được viết bằng Python. Các ngôn ngữ khác như PHP, Java, Ruby và JavaScript cũng được sử dụng để tạo các ứng dụng web, nhưng những ngôn ngữ này không có nhiều gói khoa học như Python, vì vậy các dự án khoa học sử dụng các ngôn ngữ đó thường yêu cầu các thành phần được viết bằng ngôn ngữ khác. Mặc dù điều này thường được thực hiện cho công việc thương mại khi các nhóm lớn quản lý các khía cạnh khác nhau của dự án, nhưng việc sử dụng Python cho toàn bộ ngăn xếp ứng dụng giúp đơn giản hóa đáng kể cả nhiệm vụ phát triển và bảo trì, tạo điều kiện thuận lợi cho các dự án khoa học quy mô nhỏ hơn

Một giải pháp thay thế khác cho lập trình GUI là thông qua kiến ​​trúc IPython Notebook, cho phép sổ ghi chép có các tiện ích tương tác [http. //nbviewer. ipython. org/github/ipython/ipython/blob/2. x/ví dụ/Tương tác%20Widget/Chỉ mục. ipynb]. Notebook có thể cung cấp các lợi ích của giao diện dòng lệnh và giao diện đồ họa. Gói IPython sẽ được thảo luận trong Phần VII

1. PyQt và PySide

PyQt [http. //www. máy tính bờ sông. com/software/pyqt/intro] là một ràng buộc Python của bộ công cụ GUI đa nền tảng Qt, cung cấp lập trình GUI trong Python. PyQt là phần mềm miễn phí được triển khai dưới dạng plug-in Python, nhưng do các hạn chế về giấy phép nên một số tổ chức thương mại tránh sử dụng

PySide [http. //qt-dự án. org/wiki/pyside] là một liên kết Python nguồn mở thay thế và gần đây hơn dành cho Qt, được thúc đẩy bởi Nokia và tránh các vấn đề cấp phép phát sinh với PyQt. PySide không phải là phần mềm hoàn thiện hoàn toàn, nhưng nó được sử dụng rộng rãi và sẽ sớm có độ tin cậy cao, nếu nó chưa ở thời điểm đó. Hiện tại, các tác giả không có kinh nghiệm sử dụng PySide, nhưng có thể sẽ chọn nó thay vì wxPython nếu họ bắt đầu một dự án mới yêu cầu GUI phức tạp

2. wxPython

wxPython [http. //www. wxpython. org/] là gói liên kết Python dành cho wxWidgets [Rappin và Dunn, Tham khảo Rappin và Dunn 2006]. Đây là một gói rất toàn diện cung cấp rất nhiều công cụ GUI có thể được điều chỉnh thành một dự án. Một trong những tác giả của bài viết này [BHT] có kinh nghiệm đáng kể với việc viết mã GUI dựa trên wxWidgets, chẳng hạn như mã GSAS-II Rietveld [Toby và Von Dreele, Tham khảo Toby, Huang, Dohan, . 2013; idem, Reference Toby and Von Dreele2014], but still does not find all aspects of this coding to be straightforward.

Để làm cho wxPython tương thích với Python 3. x, gói này đã được phát triển lại và ban đầu được phát hành trong một phiên bản mới vào năm 2013 có tên là “phoenix”, trong khi phiên bản gốc có tên là “cổ điển. ” Hiện tại cả hai đang được cập nhật song song. Không rõ sẽ cần bao nhiêu nỗ lực để di chuyển các chương trình giữa hai

VII. ỨNG DỤNG PYTHON

Có nhiều ứng dụng dựa trên Python hoặc cung cấp khả năng lập trình bằng Python. Như một ví dụ, Sage [http. //www. nhà hiền triết. org] là gói phần mềm toán học độc lập với các tính năng bao gồm nhiều khía cạnh của toán học, bao gồm đại số, tổ hợp, toán số, lý thuyết số và phép tính. Nó sử dụng nhiều gói tính toán nguồn mở với mục tiêu “tạo ra một giải pháp thay thế nguồn mở miễn phí khả thi cho Magma, Maple, Mathematica và Matlab. ” Nó không phải là gói Python có thể nhập, nhưng cung cấp giao diện lập trình Python thuận tiện. Sage cũng có thể được sử dụng cho điện toán dựa trên đám mây, trong đó một tác vụ được phân phối cho nhiều máy tính tại các địa điểm từ xa. Các ví dụ khác bao gồm. Gián điệp [https. //pythonhosted. org/spyder/] một môi trường điện toán và phát triển mã và PyXLL của Enthought [https. //www. pyxll. com/], cho phép nhúng Python vào bảng tính Excel

Chương trình IPython là một trong những công cụ tuyệt vời nhất xuất hiện trong cộng đồng Python [Pérez và Granger, Tham khảo Pérez và Granger 2007]. Kiến trúc đầu ra IPython [tệp sổ ghi chép] được xây dựng dựa trên các giao thức được sử dụng rộng rãi như JSON, ZeroMQ và WebSockets, với CSS để tạo kiểu và trình bày HTML cũng như với các tiêu chuẩn mở [HTML, Markdown, PNG và JPEG] để lưu trữ nội dung. Chương trình IPython hiện đang bắt đầu được sử dụng làm môi trường lập trình cho các ngôn ngữ khác, vì nhiều khả năng là chung chung và do sử dụng các tiêu chuẩn mở, các chương trình khác có thể đọc các tệp sổ ghi chép.

Sổ tay IPython phục vụ nhiều mục đích bao gồm. tạo mẫu mã, cộng tác, xem xét tài liệu và gỡ lỗi. Nó kết hợp các công cụ để định hình mã, do đó nếu một chương trình quá chậm, các phần [thường là ngắn] của mã chiếm nhiều thời gian thực thi nhất có thể được xác định và làm lại nhanh chóng. Nó tích hợp tốt với matplotlib và NumPy và có thể được sử dụng như một người có thể sử dụng Matlab, để phân tích dữ liệu một cách tương tác, với đồ họa và tính toán tích hợp. Cuối cùng, IPython cung cấp một cơ chế để thực thi các lệnh Python từ xa. Điều này có thể được sử dụng để phân phối một tính toán lớn cho một siêu máy tính. Do các lệnh Python và các đối tượng dữ liệu nội tại có thể mang theo được nên máy tính từ xa có thể có kiến ​​trúc hoàn toàn khác với bộ điều khiển. Có lẽ vấn đề lớn nhất với IPython là làm sao để làm chủ tất cả các tính năng

A. IPython dưới dạng shell

Nhiều nhà phát triển sử dụng IPython làm trình bao tương tác để chạy các lệnh Python và hiếm khi gọi Python trực tiếp qua cửa sổ lệnh. Nó cung cấp nhiều lợi thế so với việc chạy Python trực tiếp, chủ yếu là hoàn thành mã. nếu một phần của lệnh hoặc chức năng được nhập và phím tab được nhấn, thì tất cả các lần hoàn thành có thể được hiển thị; . Nó cũng sẽ hiển thị tài liệu chuỗi tài liệu về các hàm và lớp, nếu một lệnh có tiền tố hoặc theo sau một dấu chấm hỏi [ ? ].

Trong IPython, lời nhắc In [#] . được sử dụng trước khi người dùng nhập và Ra [#] . được hiển thị cho các giá trị được trả về từ một lệnh. Biểu tượng # được thay thế bằng một số. Cả VàoRa đều là các ký tự duy trì lịch sử của các lệnh mà .

IPython cung cấp tính năng gọi là “hoàn thành tab” đề xuất các tùy chọn để hoàn tất việc nhập lệnh. Ví dụ: nếu một người không chắc cách gọi hàm căn bậc hai NumPy và nhập np. sq và sau đó nhấn phím tab, IPython phản hồi bằng cách hiển thị ba khả năng hoàn thành, như minh họa bên dưới.

Trong 1]. nhập numpy dưới dạng np Trong [2]. np. np vuông. np sqrt. np vuông. vắt kiệt

Việc nhập thêm r rồi nhấn lại tab sẽ gây ra t to be added, since that is the only valid completion. Placing a question mark before or after the command causes the docstring for the routine to be displayed, such as:

Trong 2]. np. vuông?

Tài liệu này sau đó bao gồm

sqrt[x[, out]] Trả về căn bậc hai dương của một mảng, theo từng phần tử

Thông số ---------- x. array_like    Các giá trị có căn bậc hai là bắt buộc. …

Khi IPython được sử dụng làm môi trường tương tác để phân tích dữ liệu, lịch sử các lệnh trong dict In có thể được sử dụng làm nguồn Python .

IPython cũng có thể được sử dụng để thực thi các lệnh Python trong tệp. Sử dụng lệnh IPython %run , nội dung của tệp có thể được thực thi trong trình thông dịch “mới” hoặc trong ngữ cảnh Python hiện tại [ %run -i]. The latter case causes variable definitions in the current session prior to the %run được chuyển vào tệp. Dù bằng cách nào, các biến được xác định trong quá trình thực thi các lệnh trong tệp sẽ được tải vào phiên hiện tại. Lệnh %run cũng có thể được sử dụng để gỡ lỗi, thực thi thời gian và mã định hình.

B. IPython có sổ ghi chép

Sổ ghi chép IPython tương tự như lệnh đang chạy trong IPython dựa trên thiết bị đầu cuối, nhưng sử dụng cửa sổ trình duyệt web [Shen, 2014]. Các lệnh Python và kết quả của chúng có thể được lưu lại để liên lạc và cộng tác trong tương lai. Để khởi động IPython ở chế độ này, hãy nhập ipython notebook vào dòng lệnh trên máy tính của bạn. Sổ ghi chép IPython có thể so sánh với một bảng tính chỉ có một cột duy nhất, nhưng trong đó mỗi ô có thể chứa văn bản được định dạng hoặc mã Python, tùy chọn kèm theo đầu ra từ các lệnh trước đó. Như thể hiện trong Hình 3, đầu ra có thể chứa đồ họa và sơ đồ được nhúng trong sổ ghi chép.

Hình 3. [Màu trực tuyến] Một ví dụ về phép tính được thực hiện trong sổ ghi chép IPython hiển thị phép tính đơn giản và kết quả được vẽ trên biểu đồ. Tệp sổ ghi chép IPython có thể được chia sẻ qua e-mail hoặc thậm chí trong mạng, với máy chủ được bảo mật.

Do đó, sổ ghi chép IPython là một cách tuyệt vời để

  • các nhà nghiên cứu để cộng tác phân tích dữ liệu,

  • người hướng dẫn để cung cấp các ví dụ thực hành về phép tính và thậm chí có thể là bài tập về nhà hoặc bài kiểm tra,

  • diễn giả giới thiệu mã Python trong các trang trình bày của họ trong các cuộc nói chuyện hoặc hội thảo của họ.

Thông thường, dịch vụ web sổ tay IPython chỉ có thể được truy cập từ máy tính bắt đầu quá trình. Với các biện pháp bảo vệ bảo mật phù hợp, máy chủ sổ ghi chép IPython có thể cho phép các cá nhân tấn công vấn đề lập trình hoặc phân tích dữ liệu với tư cách là một nhóm với tất cả các thành viên của nhóm chạy Python từ cùng một máy chủ bằng IPython thông qua trình duyệt web. Tương tự như vậy, sổ ghi chép IPython có thể được sử dụng trong môi trường lớp học để cho phép một nhóm sinh viên cộng tác làm việc với Python mà không cần phải cài đặt trình thông dịch trên máy tính cá nhân của họ. Ngoài ra còn có các dịch vụ thương mại và miễn phí cung cấp quyền truy cập vào sổ ghi chép IPython trên web, chẳng hạn như Wakari [https. //www. wakari. io/wakari]. Notebook cũng có thể được xem miễn phí qua dịch vụ nbviewer [http. //nbviewer. ipython. org/], bằng cách nhập liên kết đến kho lưu trữ gitlab hoặc github của bạn hoặc liên kết đến trang web lưu trữ sổ ghi chép của riêng bạn. Phòng thí nghiệm Jupyter CoLaboratory do IPython tài trợ [https. // phòng thí nghiệm. jupyter. org/welcome/] cho phép chỉnh sửa sổ ghi chép theo thời gian thực và hiện đang sử dụng Google Drive để hạn chế quyền truy cập đối với người dùng có quyền được chia sẻ

Để làm ví dụ về cách IPython có thể được sử dụng để chia sẻ một vấn đề đã giải quyết xong, các tính toán trong phần “Thực hiện tính toán hiệu quả với NumPy” ở trên, được cung cấp tại URL này [https. // anl. hộp. com/s/hb3ridp66r247sq1k5qh] và Tài liệu bổ sung, cũng bao gồm các tệp sổ ghi chép IPython trình bày một số ví dụ mã khác cùng với đầu ra của chúng

VIII. KẾT LUẬN

Như chúng ta đã thảo luận và chứng minh ở đây, Python là một ngôn ngữ lập trình mạnh mẽ, mặc dù đủ đơn giản để dạy trong các khóa học cơ bản ở trường trung học. Nó có thể được học một cách dễ dàng, nhưng vẫn mang lại sức mạnh to lớn cho việc phát triển phần mềm chuyên nghiệp. Số lượng lớn các gói khoa học, trong đó chỉ một số ít được trình bày ở đây, cho thấy giá trị cao mà Python có trong tay các nhà khoa học. Các tác giả khuyến khích các nhà khoa học tìm hiểu và sử dụng Python trong công việc của họ

Python có hữu ích cho sinh viên khoa học không?

Python dành cho nhà khoa học dữ liệu . Các nhà khoa học dữ liệu sử dụng Python cho dữ liệu lớn, máy học và trí tuệ nhân tạo .

Python được sử dụng ở đâu trong khoa học?

Python đã trở thành một yếu tố chính trong khoa học dữ liệu , cho phép các nhà phân tích dữ liệu và các chuyên gia khác sử dụng ngôn ngữ này để tiến hành các phép tính thống kê phức tạp, tạo dữ liệu .

Tại sao Python được sử dụng cho ứng dụng khoa học và máy học?

Việc triển khai thực tế Python trong các dự án và nhiệm vụ máy học đã giúp các nhà phát triển, nhà khoa học dữ liệu và kỹ sư máy học làm việc dễ dàng hơn . Python có thể dễ dàng được sử dụng để phân tích và soạn thảo dữ liệu có sẵn, điều này cũng khiến nó trở thành một trong những ngôn ngữ phổ biến nhất trong khoa học dữ liệu.

3 lợi ích của Python là gì?

Những lý do hàng đầu để học Python .
Khoa học dữ liệu
Máy tính khoa học và toán học
phát triển web
Tài chính và giao dịch
Tự động hóa và quản trị hệ thống
Đô họa may tinh
Phát triển trò chơi cơ bản
Kiểm tra bảo mật và thâm nhập

Chủ Đề