Thư viện vật lý python
NumPy là một thư viện Python cung cấp cấu trúc dữ liệu đơn giản nhưng mạnh mẽ. mảng n chiều. Đây là nền tảng mà gần như tất cả sức mạnh của bộ công cụ khoa học dữ liệu của Python được xây dựng và học NumPy là bước đầu tiên trên hành trình của bất kỳ nhà khoa học dữ liệu Python nào. Hướng dẫn này sẽ cung cấp cho bạn kiến thức cần thiết để sử dụng NumPy và các thư viện cấp cao hơn dựa trên nó Show
Trong hướng dẫn này, bạn sẽ học
Để tận dụng tối đa hướng dẫn NumPy này, bạn nên làm quen với việc viết mã Python. Làm việc thông qua lộ trình học Giới thiệu về Python là một cách tuyệt vời để đảm bảo bạn đã nắm được các kỹ năng cơ bản. Nếu bạn quen thuộc với toán học ma trận, thì điều đó chắc chắn cũng sẽ hữu ích. Tuy nhiên, bạn không cần biết gì về khoa học dữ liệu. Bạn sẽ học được điều đó ở đây Ngoài ra còn có một kho lưu trữ các mẫu mã NumPy mà bạn sẽ thấy trong hướng dẫn này. Bạn có thể sử dụng nó để tham khảo và thử nghiệm với các ví dụ để xem việc thay đổi mã thay đổi kết quả như thế nào. Để tải xuống mã, hãy nhấp vào liên kết bên dưới Nhận mã mẫu. Nhấp vào đây để lấy mã mẫu mà bạn sẽ sử dụng để tìm hiểu về NumPy trong hướng dẫn này Chọn NumPy. lợi íchVì bạn đã biết Python, nên bạn có thể tự hỏi liệu bạn có thực sự phải học một mô hình hoàn toàn mới để làm khoa học dữ liệu không. Các vòng lặp 9 của Python thật tuyệt vời. Đọc và ghi tệp CSV có thể được thực hiện bằng mã truyền thống. Tuy nhiên, có một số lập luận thuyết phục cho việc học một mô hình mớiDưới đây là bốn lợi ích hàng đầu mà NumPy có thể mang lại cho mã của bạn
Vì những lợi ích này, NumPy là tiêu chuẩn thực tế cho các mảng đa chiều trong khoa học dữ liệu Python và nhiều thư viện phổ biến nhất được xây dựng trên đó. Học NumPy là một cách tuyệt vời để thiết lập nền tảng vững chắc khi bạn mở rộng kiến thức của mình sang các lĩnh vực khoa học dữ liệu cụ thể hơn Loại bỏ các quảng cáoCài đặt NumPyĐã đến lúc thiết lập mọi thứ để bạn có thể bắt đầu học cách làm việc với NumPy. Có một số cách khác nhau để thực hiện việc này và bạn không thể sai khi làm theo hướng dẫn trên trang web NumPy. Nhưng có một số chi tiết bổ sung cần lưu ý được nêu dưới đây Bạn cũng sẽ cài đặt Matplotlib. Bạn sẽ sử dụng nó trong một trong những ví dụ sau để khám phá cách các thư viện khác sử dụng NumPy Sử dụng thay thế. nó với tư cách là Trình chỉnh sửa trực tuyếnNếu bạn chỉ muốn bắt đầu với một số ví dụ, hãy làm theo hướng dẫn này và bắt đầu xây dựng một số bộ nhớ cơ với NumPy, sau đó Repl. nó là một lựa chọn tuyệt vời để chỉnh sửa trong trình duyệt. Bạn có thể đăng ký và kích hoạt môi trường Python trong vài phút. Dọc phía bên trái, có một tab dành cho các gói. Bạn có thể thêm bao nhiêu tùy thích. Đối với hướng dẫn NumPy này, hãy sử dụng các phiên bản hiện tại của NumPy và Matplotlib Đây là nơi bạn có thể tìm thấy các gói trong giao diện May mắn thay, họ cho phép bạn chỉ cần nhấp và cài đặt Cài đặt NumPy với AnacondaBản phân phối Anaconda là một bộ công cụ khoa học dữ liệu Python phổ biến đi kèm với trình quản lý gói giúp quản lý môi trường ảo và các phần phụ thuộc dự án của bạn. Nó được xây dựng xung quanh 0, là trình quản lý gói thực tế. Đây là phương pháp được đề xuất bởi dự án NumPy, đặc biệt nếu bạn đang bước vào khoa học dữ liệu trong Python mà chưa thiết lập môi trường phát triển phức tạpNếu bạn đã có một quy trình công việc mà bạn thích sử dụng 1, Pipenv, hoặc một số bộ công cụ khác, thì tốt hơn hết là không nên thêm 0 vào hỗn hợp. Kho lưu trữ gói 0 tách biệt với PyPI và bản thân 0 thiết lập một đảo gói nhỏ riêng biệt trên máy của bạn, vì vậy việc quản lý đường dẫn và ghi nhớ gói nào tồn tại ở đâu có thể là một cơn ác mộngKhi bạn đã cài đặt ____1_______0, bạn có thể chạy lệnh ____1_______6 cho các thư viện bạn sẽ cần ________số 8_______ Thao tác này sẽ cài đặt những gì bạn cần cho hướng dẫn NumPy này và bạn sẽ sẵn sàng sử dụng Cài đặt NumPy với $ pip install ipython 1Mặc dù dự án NumPy khuyên bạn nên sử dụng 0 nếu bạn mới bắt đầu, không có gì sai khi tự quản lý môi trường của mình và chỉ sử dụng 1 cũ, Pipenv, Thơ hoặc bất kỳ thứ gì khác mà bạn yêu thíchDưới đây là các lệnh để thiết lập với 1
Sau đó, đảm bảo môi trường ảo của bạn được kích hoạt và tất cả mã của bạn sẽ chạy như mong đợi Sử dụng IPython, Notebooks hoặc JupyterLabMặc dù các phần trên sẽ cung cấp cho bạn mọi thứ bạn cần để bắt đầu, nhưng có một số công cụ khác mà bạn có thể tùy chọn cài đặt để làm việc trong khoa học dữ liệu thân thiện hơn với nhà phát triển IPython là một vòng lặp đọc-đánh giá-in (REPL) được nâng cấp của Python giúp chỉnh sửa mã trong phiên thông dịch trực tiếp trở nên đơn giản và đẹp hơn. Đây là phiên IPython REPL trông như thế nào >>>
Nó có một số điểm khác biệt so với REPL cơ bản của Python, bao gồm số dòng, cách sử dụng màu sắc và chất lượng của hình ảnh mảng. Ngoài ra còn có rất nhiều phần thưởng trải nghiệm người dùng giúp việc nhập, nhập lại và chỉnh sửa mã trở nên dễ chịu hơn Bạn có thể cài đặt IPython dưới dạng độc lập
Ngoài ra, nếu bạn đợi và cài đặt bất kỳ công cụ nào tiếp theo, thì chúng sẽ bao gồm một bản sao của IPython Một thay thế đặc trưng hơn một chút cho REPL là sổ ghi chép. Tuy nhiên, Notebook là một phong cách viết Python hơi khác so với các tập lệnh tiêu chuẩn. Thay vì một tệp Python truyền thống, chúng cung cấp cho bạn một loạt tập lệnh nhỏ được gọi là các ô mà bạn có thể chạy đi chạy lại theo bất kỳ thứ tự nào bạn muốn, tất cả trong cùng một phiên bộ nhớ Python Một điều thú vị về sổ ghi chép là bạn có thể bao gồm các biểu đồ và hiển thị các đoạn Markdown giữa các ô, vì vậy chúng thực sự tuyệt vời để viết các phân tích dữ liệu ngay bên trong mã Đây là những gì nó trông giống như Sản phẩm máy tính xách tay phổ biến nhất có lẽ là Máy tính xách tay Jupyter, nhưng nteract là một tùy chọn khác bao bọc chức năng của Jupyter và cố gắng làm cho nó dễ tiếp cận và mạnh mẽ hơn một chút. Tuy nhiên, nếu bạn đang xem Jupyter Notebook và nghĩ rằng nó cần nhiều phẩm chất giống IDE hơn, thì JupyterLab là một lựa chọn khác. Bạn có thể tùy chỉnh trình soạn thảo văn bản, sổ ghi chép, thiết bị đầu cuối và các thành phần tùy chỉnh, tất cả đều có trong giao diện dựa trên trình duyệt. Nó có thể sẽ thoải mái hơn cho những người đến từ MatLab. Nó là người trẻ nhất trong số các dịch vụ, nhưng nó là 1. 0 đã được phát hành trở lại vào năm 2019, vì vậy nó phải ổn định và đầy đủ tính năng Đây là giao diện trông như thế nào Cho dù bạn chọn tùy chọn nào, sau khi cài đặt xong, bạn sẽ sẵn sàng chạy những dòng mã NumPy đầu tiên của mình. Đã đến lúc cho ví dụ đầu tiên Loại bỏ các quảng cáoXin chào NumPy. Hướng dẫn kiểm tra điểm congVí dụ đầu tiên này giới thiệu một số khái niệm cốt lõi trong NumPy mà bạn sẽ sử dụng trong suốt phần còn lại của hướng dẫn
Những khái niệm này là cốt lõi của việc sử dụng NumPy một cách hiệu quả Kịch bản là thế này. Bạn là giáo viên vừa chấm điểm cho học sinh của mình trong bài kiểm tra gần đây. Thật không may, bạn có thể đã làm bài kiểm tra quá khó và hầu hết học sinh đều làm bài kém hơn mong đợi. Để giúp đỡ mọi người, bạn sẽ làm cong điểm số của mọi người Nó sẽ là một đường cong tương đối thô sơ, mặc dù. Bạn sẽ lấy bất kể điểm trung bình là bao nhiêu và tuyên bố rằng điểm C. Ngoài ra, bạn sẽ đảm bảo rằng đường cong không vô tình làm ảnh hưởng đến điểm số của học sinh hoặc giúp học sinh làm tốt hơn 100% Nhập mã này vào REPL của bạn >>>
Điểm ban đầu đã được tăng lên dựa trên vị trí của chúng trong gói, nhưng không có điểm nào trong số chúng được đẩy lên hơn 100% Dưới đây là những điểm nhấn quan trọng
Ở dòng 7, bạn tận dụng hai khái niệm quan trọng cùng một lúc
Vectorization là quá trình thực hiện cùng một thao tác theo cùng một cách cho từng phần tử trong một mảng. Điều này loại bỏ 9 vòng lặp khỏi mã của bạn nhưng đạt được kết quả tương tựPhát sóng là quá trình mở rộng hai mảng có hình dạng khác nhau và tìm ra cách thực hiện phép tính vector hóa giữa chúng. Hãy nhớ rằng, 8 là một mảng các số có hình dạng 4 và 0 là một số vô hướng, hoặc một số, về cơ bản có hình dạng 1. Trong trường hợp này, NumPy thêm vô hướng vào từng mục trong mảng và trả về một mảng mới với kết quảCuối cùng, trên dòng 8, bạn giới hạn hoặc cắt các giá trị thành một tập hợp các giá trị tối thiểu và tối đa. Ngoài các phương thức mảng, NumPy còn có một số lượng lớn các hàm tích hợp. Bạn không cần phải ghi nhớ tất cả—đó là mục đích của tài liệu. Bất cứ khi nào bạn gặp khó khăn hoặc cảm thấy cần có một cách dễ dàng hơn để làm điều gì đó, hãy xem qua tài liệu và xem liệu đã có quy trình nào thực hiện chính xác những gì bạn cần chưa Trong trường hợp này, bạn cần một hàm nhận vào một mảng và đảm bảo các giá trị không vượt quá mức tối thiểu hoặc tối đa nhất định. 2 thực hiện chính xác điều đóDòng 8 cũng cung cấp một ví dụ khác về phát sóng. Đối với đối số thứ hai của 2, bạn vượt qua 8, đảm bảo rằng mỗi điểm cong mới không thấp hơn điểm ban đầu. Nhưng đối với đối số thứ ba, bạn chuyển một giá trị duy nhất. 5. NumPy lấy giá trị đó và phát nó cho mọi phần tử trong 6, đảm bảo rằng không có điểm nào trong số các điểm cong mới vượt quá điểm hoàn hảoBắt đầu vào hình dạng. Hình dạng mảng và trụcBây giờ bạn đã thấy một số điều mà NumPy có thể làm, đã đến lúc củng cố nền tảng đó bằng một số lý thuyết quan trọng. Có một vài khái niệm quan trọng cần ghi nhớ, đặc biệt khi bạn làm việc với mảng ở các chiều cao hơn Các vectơ, là mảng một chiều của các số, ít phức tạp nhất để theo dõi. Hai chiều cũng không quá tệ vì chúng tương tự như bảng tính. Nhưng mọi thứ bắt đầu trở nên phức tạp ở ba chiều và hình dung bốn chiều? Loại bỏ các quảng cáoLàm chủ hình dạngHình dạng là một khái niệm quan trọng khi bạn đang sử dụng mảng nhiều chiều. Tại một thời điểm nhất định, bạn sẽ dễ dàng quên đi việc trực quan hóa hình dạng dữ liệu của mình và thay vào đó tuân theo một số quy tắc tinh thần và tin tưởng NumPy sẽ cho bạn biết hình dạng chính xác Tất cả các mảng đều có một thuộc tính gọi là 7 trả về một bộ có kích thước theo từng chiều. Thứ nguyên nào ít quan trọng hơn, nhưng điều quan trọng là các mảng bạn chuyển đến các hàm có hình dạng mà các hàm mong đợi. Một cách phổ biến để xác nhận rằng dữ liệu của bạn có hình dạng phù hợp là in dữ liệu và hình dạng của nó cho đến khi bạn chắc chắn rằng mọi thứ đang hoạt động như mong đợiVí dụ tiếp theo này sẽ hiển thị quá trình này. Bạn sẽ tạo một mảng có hình dạng phức tạp, kiểm tra nó và sắp xếp lại để nó trông giống như >>>
Tại đây, bạn sử dụng một phương thức 8 có tên là 9 để tạo khối dữ liệu 2 × 2 × 3. Khi bạn kiểm tra hình dạng của mảng trong đầu vào 3, nó chính xác như bạn đã nói. Tuy nhiên, bạn có thể thấy các mảng được in nhanh chóng trở nên khó hình dung như thế nào trong không gian ba chiều trở lên. Sau khi bạn hoán đổi các trục với 0, sẽ rõ ràng hơn một chút về kích thước nào. Bạn sẽ thấy nhiều hơn về các trục trong phần tiếp theoHình dạng sẽ xuất hiện trở lại trong phần phát sóng. Hiện tại, hãy nhớ rằng những tấm séc nhỏ này không tốn bất kỳ chi phí nào. Bạn luôn có thể xóa các ô hoặc loại bỏ mã sau khi mọi thứ đang chạy trơn tru Hiểu các trụcVí dụ trên cho thấy tầm quan trọng của việc biết không chỉ dữ liệu của bạn ở dạng nào mà còn biết dữ liệu nào nằm trong trục nào. Trong mảng NumPy, các trục không được lập chỉ mục và xác định thứ nguyên nào. Ví dụ mảng hai chiều có trục tung (trục 0) và trục hoành (trục 1). Rất nhiều hàm và lệnh trong NumPy thay đổi hành vi của chúng dựa trên trục mà bạn yêu cầu chúng xử lý Ví dụ này sẽ cho thấy cách hoạt động của 1 theo mặc định, không có đối số 2 và cách nó thay đổi chức năng tùy thuộc vào việc bạn chỉ định 2 nào khi cung cấp đối số>>>
Theo mặc định, 1 trả về giá trị lớn nhất trong toàn bộ mảng, bất kể có bao nhiêu thứ nguyên. Tuy nhiên, sau khi bạn chỉ định một trục, nó sẽ thực hiện phép tính đó cho từng tập hợp giá trị dọc theo trục cụ thể đó. Ví dụ: với đối số là 5, 1 chọn giá trị lớn nhất trong mỗi nhóm trong bốn bộ giá trị theo chiều dọc của 7 và trả về một mảng đã được làm phẳng hoặc được tổng hợp thành một mảng một chiềuTrên thực tế, nhiều chức năng của NumPy hoạt động theo cách này. Nếu không có trục nào được chỉ định, thì chúng sẽ thực hiện thao tác trên toàn bộ tập dữ liệu. Mặt khác, chúng thực hiện thao tác theo kiểu trục Phát thanh truyền hìnhCho đến nay, bạn đã thấy một vài ví dụ nhỏ hơn về phát sóng, nhưng chủ đề sẽ bắt đầu có ý nghĩa hơn khi bạn thấy nhiều ví dụ hơn. Về cơ bản, nó hoạt động xung quanh một quy tắc. các mảng có thể được phát với nhau nếu kích thước của chúng khớp nhau hoặc nếu một trong các mảng có kích thước là 8Nếu các mảng khớp nhau về kích thước dọc theo một trục, thì các phần tử sẽ được vận hành trên từng phần tử, tương tự như cách hoạt động của hàm 9 trong Python. Nếu một trong các mảng có kích thước 8 trong một trục, thì giá trị đó sẽ được phát dọc theo trục đó hoặc được nhân đôi nhiều lần nếu cần để khớp với số lượng phần tử dọc theo trục đó trong mảng khácĐây là một ví dụ nhanh. Mảng 1 có dạng 2 và mảng 3 có dạng 4. Dựa vào các quy tắc trên, bạn có thể thao tác trên các mảng này với nhau
Cả ba trục đều tuân thủ thành công quy tắc Bạn có thể thiết lập các mảng như thế này
1 có 6 mặt phẳng, mỗi mặt phẳng có 8 hàng và 6 cột. 3 chỉ có mặt phẳng 8 với 9 hàng và 6 cột. Xem những gì NumPy làm cho bạn khi bạn cố gắng thực hiện phép tính giữa chúngCộng hai mảng lại với nhau
Cách phát sóng hoạt động là NumPy sao chép mặt phẳng trong 3 ba lần để bạn có tổng cộng bốn, khớp với số lượng mặt phẳng trong 1. Nó cũng sao chép một hàng trong 1 năm lần với tổng số sáu lần, khớp với số hàng trong 3. Sau đó, nó thêm từng phần tử trong mảng 1 mới được mở rộng vào đối tác của nó ở cùng một vị trí trong 3. Kết quả của mỗi phép tính hiển thị ở vị trí tương ứng của đầu raGhi chú. Đây là một cách hay để tạo một mảng từ một phạm vi bằng cách sử dụng 7Một lần nữa, mặc dù bạn có thể sử dụng các từ như “mặt phẳng”, “hàng” và “cột” để mô tả cách các hình dạng trong ví dụ này được phát rộng để tạo ra các hình dạng ba chiều phù hợp, mọi thứ trở nên phức tạp hơn ở các kích thước cao hơn. Rất nhiều lần, bạn sẽ chỉ cần tuân theo các quy tắc phát sóng và thực hiện nhiều bản in để đảm bảo mọi thứ hoạt động theo đúng kế hoạch Hiểu về phát sóng là một phần quan trọng trong việc thành thạo các phép tính được véc tơ hóa và các phép tính được véc tơ hóa là cách để viết mã NumPy rõ ràng, thành ngữ Loại bỏ các quảng cáoHoạt động khoa học dữ liệu. Lọc, Đặt hàng, Tổng hợpĐiều đó kết thúc một phần nặng về lý thuyết nhưng hơi nhẹ về các ví dụ thực tế, trong thế giới thực. Trong phần này, bạn sẽ làm việc thông qua một số ví dụ về hoạt động khoa học dữ liệu thực tế, hữu ích. Lọc, sắp xếp và tổng hợp dữ liệu lập chỉ mụcLập chỉ mục sử dụng nhiều thành ngữ giống như mã Python bình thường sử dụng. Bạn có thể sử dụng các chỉ số dương hoặc âm để lập chỉ mục từ phía trước hoặc phía sau của mảng. Bạn có thể sử dụng dấu hai chấm ( 8) để chỉ định “phần còn lại” hoặc “tất cả” và thậm chí bạn có thể sử dụng hai dấu hai chấm để bỏ qua các phần tử như với danh sách Python thông thườngĐây là sự khác biệt. Mảng NumPy sử dụng dấu phẩy giữa các trục, vì vậy bạn có thể lập chỉ mục cho nhiều trục trong một bộ dấu ngoặc vuông. Một ví dụ là cách dễ nhất để thể hiện điều này. Đã đến lúc xác nhận Hình vuông dưới đây có một số tính chất tuyệt vời. Nếu bạn cộng bất kỳ hàng, cột hoặc đường chéo nào, thì bạn sẽ nhận được cùng một số, 34. Đó cũng là những gì bạn sẽ nhận được nếu cộng từng ô trong số bốn góc phần tư, bốn ô vuông ở giữa, bốn ô vuông ở góc hoặc bốn ô vuông ở góc của bất kỳ lưới 3 × 3 nào có trong đó. Bạn sẽ chứng minh điều đó Sự thật thú vị. Ở hàng dưới cùng, số 15 và 14 nằm ở giữa, thể hiện năm mà Dürer đã tạo ra hình vuông này. Các số 1 và 4 cũng nằm trong hàng đó, đại diện cho các chữ cái đầu tiên và thứ tư của bảng chữ cái, A và D, là tên viết tắt của người tạo ra hình vuông, Albrecht Dürer Nhập thông tin sau vào REPL của bạn >>>
Bên trong vòng lặp 9, bạn xác minh rằng tất cả các hàng và tất cả các cột có tổng bằng 34. Sau đó, bằng cách sử dụng lập chỉ mục có chọn lọc, bạn xác minh rằng mỗi góc phần tư cũng cộng tới 34Một điều cuối cùng cần lưu ý là bạn có thể lấy tổng của bất kỳ mảng nào để cộng tất cả các phần tử của nó trên toàn cầu với 00. Thay vào đó, phương pháp này cũng có thể sử dụng đối số 2 để thực hiện tính tổng theo trụcTạo mặt nạ và lọcLựa chọn dựa trên chỉ mục là tuyệt vời, nhưng nếu bạn muốn lọc dữ liệu của mình dựa trên các tiêu chí không thống nhất hoặc không theo trình tự phức tạp hơn thì sao? Mặt nạ là một mảng có hình dạng chính xác giống như dữ liệu của bạn, nhưng thay vì các giá trị của bạn, nó chứa các giá trị Boolean. hoặc là 02 hoặc là 03. Bạn có thể sử dụng mảng mặt nạ này để lập chỉ mục vào mảng dữ liệu của mình theo những cách phức tạp và phi tuyến tính. Nó sẽ trả về tất cả các phần tử mà mảng Boolean có giá trị 02Đây là một ví dụ cho thấy quy trình, đầu tiên là chuyển động chậm và sau đó là cách nó thường được thực hiện, tất cả trong một dòng >>> 0Bạn sẽ thấy phần giải thích về các thủ thuật tạo mảng mới trong đầu vào 2 trong giây lát, nhưng hiện tại, hãy tập trung vào nội dung chính của ví dụ. Đây là những phần quan trọng
Quay lại đầu vào 2, bạn gặp ba khái niệm mới
06 tạo n số được phân bổ đều giữa số tối thiểu và số tối đa, rất hữu ích cho việc lấy mẫu phân bố đều trong biểu đồ khoa họcDo tính toán cụ thể trong ví dụ này, nên việc có trong mảng 05 dễ dàng hơn. Nhưng vì khoảng cách giữa 5 và 50 không chia hết cho 24 nên các số kết quả sẽ là. Bạn chỉ định một 07 của 12 để buộc hàm làm tròn xuống và cung cấp cho bạn các số nguyên. Bạn sẽ thấy một cuộc thảo luận chi tiết hơn về các loại dữ liệu sau nàyCuối cùng, 13 có thể lấy 08 làm một trong các kích thước chiều của nó. Điều đó có nghĩa là NumPy chỉ nên tìm ra trục cụ thể đó cần lớn như thế nào dựa trên kích thước của các trục khác. Trong trường hợp này, với các giá trị 15 và kích thước là 6 ở trục 0, trục 1 kết thúc với kích thước là 9Đây là một ví dụ nữa để thể hiện sức mạnh của bộ lọc theo mặt nạ. Phân phối chuẩn là một phân phối xác suất trong đó khoảng 95. 45% giá trị xảy ra trong hai độ lệch chuẩn của giá trị trung bình Bạn có thể xác minh điều đó với một chút trợ giúp từ mô-đun 18 của NumPy để tạo các giá trị ngẫu nhiên>>> 1Tại đây, bạn sử dụng một cú pháp có vẻ lạ để kết hợp các điều kiện lọc. toán tử nhị phân 19. Tại sao lại như vậy? . Nếu bạn cố gắng thực hiện 22, thì bạn sẽ nhận được cảnh báo về giá trị thực của một mảng là kỳ lạ như thế nào, bởi vì 23 đang hoạt động dựa trên giá trị thực của toàn bộ mảng, không phải từng phần tửLoại bỏ các quảng cáoChuyển đổi, sắp xếp và nốiCác thao tác khác, mặc dù không phổ biến như lập chỉ mục hoặc lọc, nhưng cũng có thể rất hữu ích tùy thuộc vào tình huống bạn gặp phải. Bạn sẽ thấy một vài ví dụ trong phần này Đây là hoán vị một mảng >>> 2Khi bạn tính toán chuyển vị của một mảng, các chỉ số hàng và cột của mọi phần tử được chuyển đổi. Ví dụ, mục 24 trở thành mục 25. Bạn cũng có thể sử dụng 26 làm bí danh cho 27Khối mã sau hiển thị cách sắp xếp, nhưng bạn cũng sẽ thấy một kỹ thuật sắp xếp mạnh mẽ hơn trong phần sắp tới về dữ liệu có cấu trúc >>> 3Việc bỏ qua đối số 2 sẽ tự động chọn kích thước cuối cùng và trong cùng, là các hàng trong ví dụ này. Sử dụng 29 làm phẳng mảng và thực hiện sắp xếp toàn cục. Nếu không, bạn có thể chỉ định trục nào bạn muốn. Ở đầu ra 5, mỗi cột của mảng vẫn có đầy đủ các phần tử của nó nhưng chúng đã được sắp xếp từ thấp đến cao bên trong cột đóCuối cùng, đây là một ví dụ về nối. Mặc dù có hàm 30, nhưng cũng có một số hàm trợ giúp đôi khi dễ đọc hơnDưới đây là một số ví dụ >>> 4Đầu vào 4 và 5 hiển thị các chức năng trực quan hơn một chút 31 và 32. Đầu vào 6 và 7 hiển thị 33 chung chung hơn, đầu tiên không có đối số 2 và sau đó với 35. Hành vi làm phẳng này có dạng tương tự như những gì bạn vừa thấy với 36Một trở ngại quan trọng cần lưu ý là tất cả các hàm này lấy một bộ mảng làm đối số đầu tiên của chúng thay vì một số đối số thay đổi như bạn có thể mong đợi. Bạn có thể biết vì có thêm một cặp dấu ngoặc đơn tổng hợpĐiểm dừng cuối cùng của bạn trong chuyến tham quan chức năng này trước khi đi sâu vào một số chủ đề và ví dụ nâng cao hơn là tổng hợp. Bạn đã thấy khá nhiều phương pháp tổng hợp, bao gồm 37, 1, 6 và 40. Bạn có thể tham khảo thư viện hàm lớn hơn của NumPy để xem thêm. Nhiều hàm toán học, tài chính và thống kê sử dụng tính năng tổng hợp để giúp bạn giảm số lượng thứ nguyên trong dữ liệu của mìnhVí dụ thực tế 1. Triển khai Chuỗi MaclaurinBây giờ là lúc để xem trường hợp sử dụng thực tế cho các kỹ năng được giới thiệu trong các phần trên. thực hiện một phương trình Một trong những điều khó khăn nhất khi chuyển đổi các phương trình toán học thành mã mà không có NumPy là thiếu nhiều điểm tương đồng về hình ảnh, điều này khiến bạn khó có thể biết được phần nào của phương trình mà bạn đang xem khi đọc mã. Các phép tính tổng được chuyển đổi thành các vòng lặp 9 dài dòng hơn và các tối ưu hóa giới hạn cuối cùng trông giống như các vòng lặp 42Sử dụng NumPy cho phép bạn tiếp cận gần hơn với biểu diễn một đối một từ phương trình đến mã Trong ví dụ tiếp theo này, bạn sẽ mã hóa chuỗi Maclaurin cho ex. Chuỗi Maclaurin là một cách tính gần đúng các hàm phức tạp hơn với một chuỗi vô hạn các số hạng tổng có tâm là 0 Ví dụ, chuỗi Maclaurin là tổng kết sau Bạn cộng các số hạng bắt đầu từ 0 và theo lý thuyết là vô cùng. Mỗi số hạng thứ n sẽ được x nâng lên thành n và chia cho n. , đó là ký hiệu cho hoạt động giai thừa Bây giờ là lúc để bạn đưa mã đó vào mã NumPy. Tạo một tệp có tên là 43 5Khi bạn chạy cái này, bạn sẽ thấy kết quả sau 6Khi bạn tăng số lượng thuật ngữ, giá trị Maclaurin của bạn ngày càng gần với giá trị thực hơn và lỗi của bạn ngày càng nhỏ lại Việc tính toán mỗi số hạng liên quan đến việc lấy 44 lũy thừa của 45 và chia cho 46, hoặc giai thừa của 45. Cộng, tổng và nâng lũy thừa là tất cả các thao tác mà NumPy có thể vector hóa tự động và nhanh chóng, nhưng đối với 48 thì không như vậyĐể sử dụng 48 trong phép tính vector hóa, bạn phải sử dụng 50 để tạo phiên bản vector hóa. Tài liệu về 50 nói rằng nó không hơn gì một lớp vỏ bọc mỏng áp dụng vòng lặp 9 cho một chức năng nhất định. Không có lợi ích hiệu suất thực sự nào khi sử dụng nó thay vì mã Python thông thường và có thể có một số hình phạt chung. Tuy nhiên, như bạn sẽ thấy trong giây lát, lợi ích về khả năng đọc là rất lớnKhi giai thừa được véc tơ hóa của bạn được đặt đúng chỗ, mã thực tế để tính toán toàn bộ chuỗi Maclaurin ngắn một cách đáng kinh ngạc. Nó cũng có thể đọc được. Quan trọng nhất, nó gần như chính xác với phương trình toán học trông như thế nào 7Đây là một ý tưởng quan trọng đến mức nó xứng đáng được nhắc lại. Ngoại trừ dòng bổ sung để khởi tạo 45, đoạn mã đọc gần như chính xác như phương trình toán học ban đầu. Không có vòng lặp 9, không có biến tạm thời 55. Đơn giản, rõ ràng, toán họcCứ như vậy, bạn đang sử dụng NumPy để lập trình toán học. Để thực hành thêm, hãy thử chọn một trong các chuỗi Maclaurin khác và triển khai nó theo cách tương tự Loại bỏ các quảng cáoTối ưu hóa lưu trữ. Loại dữ liệuBây giờ bạn đã có thêm một chút kinh nghiệm thực tế, đã đến lúc quay lại lý thuyết và xem xét các loại dữ liệu. Các kiểu dữ liệu không đóng vai trò trung tâm trong nhiều mã Python. Các số hoạt động như chúng phải làm, các chuỗi làm những việc khác, Booleans là đúng hay sai và ngoài ra, bạn tạo các đối tượng và bộ sưu tập của riêng mình Tuy nhiên, trong NumPy, có một chút chi tiết cần được đề cập. NumPy sử dụng mã C ẩn để tối ưu hóa hiệu suất và nó không thể làm điều đó trừ khi tất cả các mục trong một mảng có cùng loại. Điều đó không chỉ có nghĩa là cùng loại Python. Chúng phải cùng loại C cơ bản, có cùng hình dạng và kích thước theo bit Các loại số. $ mkdir numpy-tutorial $ cd numpy-tutorial $ python3 -m venv .numpy-tutorial-venv $ source .numpy-tutorial-venv/bin/activate (.numpy-tutorial-venv) $ pip install numpy matplotlib Collecting numpy Downloading numpy-1.19.1-cp38-cp38-macosx_10_9_x86_64.whl (15.3 MB) |████████████████████████████████| 15.3 MB 2.7 MB/s Collecting matplotlib Downloading matplotlib-3.3.0-1-cp38-cp38-macosx_10_9_x86_64.whl (11.4 MB) |████████████████████████████████| 11.4 MB 16.8 MB/s ... 12, $ mkdir numpy-tutorial $ cd numpy-tutorial $ python3 -m venv .numpy-tutorial-venv $ source .numpy-tutorial-venv/bin/activate (.numpy-tutorial-venv) $ pip install numpy matplotlib Collecting numpy Downloading numpy-1.19.1-cp38-cp38-macosx_10_9_x86_64.whl (15.3 MB) |████████████████████████████████| 15.3 MB 2.7 MB/s Collecting matplotlib Downloading matplotlib-3.3.0-1-cp38-cp38-macosx_10_9_x86_64.whl (11.4 MB) |████████████████████████████████| 11.4 MB 16.8 MB/s ... 57, $ mkdir numpy-tutorial $ cd numpy-tutorial $ python3 -m venv .numpy-tutorial-venv $ source .numpy-tutorial-venv/bin/activate (.numpy-tutorial-venv) $ pip install numpy matplotlib Collecting numpy Downloading numpy-1.19.1-cp38-cp38-macosx_10_9_x86_64.whl (15.3 MB) |████████████████████████████████| 15.3 MB 2.7 MB/s Collecting matplotlib Downloading matplotlib-3.3.0-1-cp38-cp38-macosx_10_9_x86_64.whl (11.4 MB) |████████████████████████████████| 11.4 MB 16.8 MB/s ... 58 và $ mkdir numpy-tutorial $ cd numpy-tutorial $ python3 -m venv .numpy-tutorial-venv $ source .numpy-tutorial-venv/bin/activate (.numpy-tutorial-venv) $ pip install numpy matplotlib Collecting numpy Downloading numpy-1.19.1-cp38-cp38-macosx_10_9_x86_64.whl (15.3 MB) |████████████████████████████████| 15.3 MB 2.7 MB/s Collecting matplotlib Downloading matplotlib-3.3.0-1-cp38-cp38-macosx_10_9_x86_64.whl (11.4 MB) |████████████████████████████████| 11.4 MB 16.8 MB/s ... 59Vì hầu hết khoa học dữ liệu và tính toán số của bạn sẽ có xu hướng liên quan đến các con số, nên chúng có vẻ là nơi tốt nhất để bắt đầu. Về cơ bản, có bốn loại số trong mã NumPy và mỗi loại có thể có một vài kích cỡ khác nhau Bảng dưới đây phân tích chi tiết các loại này Name# of BitsPython TypeNumPy TypeInteger64 12 61Booleans8 57 63Float64 58 65Complex128 59 67Đây chỉ là những loại ánh xạ tới các loại Python hiện có. NumPy cũng có các loại cho các phiên bản có kích thước nhỏ hơn của từng loại, như số nguyên 8-, 16- và 32 bit, số dấu phẩy động có độ chính xác đơn 32 bit và số phức có độ chính xác đơn 64 bit. Tài liệu liệt kê toàn bộ chúng Để chỉ định loại khi tạo mảng, bạn có thể cung cấp đối số 07>>> 8NumPy tự động chuyển đổi loại độc lập với nền tảng của bạn 69 thành bất kỳ loại kích thước cố định nào mà nền tảng của bạn hỗ trợ cho kích thước đó. Trong trường hợp này, nó sử dụng 70. Nếu các giá trị được cung cấp của bạn không khớp với hình dạng của 07 mà bạn đã cung cấp, thì NumPy sẽ sửa nó cho bạn hoặc đưa ra lỗiCác loại chuỗi. Kích thước UnicodeCác chuỗi hoạt động hơi lạ trong mã NumPy vì NumPy cần biết có bao nhiêu byte để mong đợi, đây thường không phải là một yếu tố trong lập trình Python. May mắn thay, NumPy thực hiện khá tốt công việc xử lý các trường hợp ít phức tạp hơn cho bạn >>> 9Ở đầu vào 2, bạn cung cấp một loại 07 của loại 73 tích hợp sẵn của Python, nhưng ở đầu ra 3, nó đã được chuyển đổi thành một chuỗi Unicode nhỏ có kích thước 74. Khi bạn kiểm tra kích thước của một mục nhất định trong đầu vào 4, bạn sẽ thấy rằng mỗi mục đó là 75 byte. ba ký tự Unicode 4 byteGhi chú. Khi xử lý các loại dữ liệu NumPy, bạn phải suy nghĩ về những thứ như độ bền của các giá trị của bạn. Trong trường hợp này, 07 77 có nghĩa là mỗi giá trị có kích thước bằng ba ký tự Unicode, với byte có ý nghĩa nhỏ nhất được lưu trữ trước trong bộ nhớ và byte có ý nghĩa lớn nhất được lưu trữ sau cùng. Một 07 của 79 sẽ biểu thị điều ngược lạiNhư một ví dụ, NumPy đại diện cho ký tự Unicode “🐍” với các byte 80 với một 07 của 82 và 83 với một 07 của 85. Hãy dùng thử bằng cách tạo một mảng đầy biểu tượng cảm xúc, đặt 07 cho cái này hoặc cái kia, sau đó gọi 87 trên mảng của bạnNếu bạn muốn nghiên cứu về cách Python xử lý các giá trị 1 và 0 của các kiểu dữ liệu Python thông thường của bạn, thì tài liệu chính thức cho , một mô-đun thư viện chuẩn hoạt động với các byte thô, là một tài nguyên tốt khác Khi bạn kết hợp mảng đó với một mảng có mục lớn hơn để tạo một mảng mới ở đầu vào 8, NumPy sẽ chỉ ra một cách hữu ích các mục của mảng mới cần phải lớn đến mức nào và tăng tất cả chúng lên kích thước 88Nhưng đây là điều sẽ xảy ra khi bạn cố sửa đổi một trong các vị trí có giá trị lớn hơn dung lượng của 07>>> 0Thay vào đó, nó không hoạt động như mong đợi và cắt bớt giá trị của bạn. Nếu bạn đã có một mảng, thì tính năng phát hiện kích thước tự động của NumPy sẽ không phù hợp với bạn. Bạn nhận được ba ký tự và thế là xong. Phần còn lại bị mất trong khoảng trống Tất cả điều này để nói rằng, nói chung, NumPy hỗ trợ bạn khi bạn làm việc với các chuỗi, nhưng bạn phải luôn theo dõi kích thước của các phần tử của mình và đảm bảo rằng bạn có đủ không gian khi sửa đổi hoặc thay đổi các mảng tại chỗ Loại bỏ các quảng cáoMảng có cấu trúcBan đầu, bạn đã học được rằng tất cả các phần tử mảng phải có cùng kiểu dữ liệu, nhưng điều đó không hoàn toàn đúng. NumPy có một loại mảng đặc biệt, được gọi là mảng bản ghi hoặc mảng có cấu trúc, mà bạn có thể chỉ định một loại và, tùy chọn, một tên trên cơ sở mỗi cột. Điều này làm cho việc sắp xếp và lọc trở nên mạnh mẽ hơn và có thể cảm thấy tương tự như khi làm việc với dữ liệu trong Excel, CSV hoặc cơ sở dữ liệu quan hệ Đây là một ví dụ nhanh để thể hiện chúng một chút >>> 1Ở đầu vào 2, bạn tạo một mảng, ngoại trừ mỗi mục là một bộ có tên, tuổi và mức năng lượng. Đối với 07, bạn thực sự cung cấp một danh sách các bộ dữ liệu với thông tin về từng trường. 91 là trường Unicode gồm 10 ký tự và cả 92 và 93 đều là số nguyên 4 byte hoặc 8 byte tiêu chuẩnỞ đầu vào 3, bạn có thể thấy rằng các hàng, được gọi là bản ghi, vẫn có thể truy cập được bằng cách sử dụng chỉ mục Ở đầu vào 4, bạn sẽ thấy một cú pháp mới để truy cập toàn bộ cột hoặc trường Cuối cùng, ở đầu vào 5, bạn sẽ thấy sự kết hợp siêu mạnh mẽ giữa lọc dựa trên mặt nạ dựa trên trường và lựa chọn dựa trên trường. Lưu ý cách đọc truy vấn SQL sau đây không khác mấy 2Trong cả hai trường hợp, kết quả là một danh sách các tên có cấp độ quyền lực vượt quá 94Bạn thậm chí có thể thêm chức năng 95 bằng cách sử dụng 96>>> 3Thao tác này sắp xếp dữ liệu theo 93 trước khi truy xuất dữ liệu, giúp hoàn thiện lựa chọn của bạn về các công cụ NumPy để chọn, lọc và sắp xếp các mục giống như bạn có thể làm trong SQLTìm hiểu thêm về các loại dữ liệuPhần hướng dẫn này được thiết kế để giúp bạn có đủ kiến thức để làm việc hiệu quả với các kiểu dữ liệu của NumPy, hiểu một chút về cách mọi thứ hoạt động bên trong và nhận ra một số cạm bẫy phổ biến. Nó chắc chắn không phải là một hướng dẫn đầy đủ. Có nhiều tài nguyên hơn Ngoài ra còn có nhiều thông tin khác về các đối tượng 07, bao gồm các cách khác nhau để xây dựng, tùy chỉnh và tối ưu hóa chúng cũng như cách làm cho chúng mạnh mẽ hơn cho mọi nhu cầu xử lý dữ liệu của bạn. Nếu bạn gặp sự cố và dữ liệu của bạn không tải vào các mảng chính xác như bạn mong đợi, thì đó là một nơi tốt để bắt đầuCuối cùng, NumPy 00 là một đối tượng mạnh mẽ theo đúng nghĩa của nó và bạn thực sự chỉ mới chạm vào bề nổi của các khả năng của bộ dữ liệu có cấu trúc. Nó chắc chắn đáng để đọc qua tài liệu 00 cũng như tài liệu cho các lớp con mảng chuyên biệt khác mà NumPy cung cấpnhìn về phía trước. Thư viện mạnh mẽ hơnTrong phần tiếp theo này, bạn sẽ chuyển sang các công cụ mạnh mẽ được xây dựng dựa trên các khối xây dựng cơ bản mà bạn đã thấy ở trên. Dưới đây là một số thư viện mà bạn sẽ muốn xem qua khi thực hiện các bước tiếp theo trên con đường đạt đến sự thành thạo toàn diện về khoa học dữ liệu Python gấu trúcpandas là một thư viện lấy khái niệm về mảng có cấu trúc và xây dựng nó với rất nhiều phương thức tiện lợi, cải thiện trải nghiệm của nhà phát triển và tự động hóa tốt hơn. Về cơ bản, nếu bạn cần nhập dữ liệu từ mọi nơi, làm sạch, định hình lại, đánh bóng và sau đó xuất dữ liệu thành bất kỳ định dạng cơ bản nào, thì gấu trúc là thư viện dành cho bạn. Có khả năng là vào một thời điểm nào đó, bạn sẽ 02 cùng lúc với bạn 03Tài liệu về gấu trúc có một hướng dẫn nhanh với đầy các ví dụ cụ thể có tên là 10 phút với gấu trúc. Đó là một nguồn tài nguyên tuyệt vời mà bạn có thể sử dụng để thực hành nhanh chóng, thực hành Loại bỏ các quảng cáoscikit-họcNếu mục tiêu của bạn thiên về hướng học máy, thì scikit-learning là bước tiếp theo. Cung cấp đủ dữ liệu, bạn có thể thực hiện, hồi quy, phân cụm, v.v. chỉ trong một vài dòng Nếu bạn đã quen thuộc với toán học, thì tài liệu scikit-learning có một danh sách tuyệt vời giúp bạn bắt đầu và chạy Python. Nếu không, thì Lộ trình học Toán cho Khoa học dữ liệu là một nơi tốt để bắt đầu. Ngoài ra, còn có toàn bộ lộ trình học tập dành cho máy học Điều quan trọng là bạn phải hiểu ít nhất những điều cơ bản về toán học đằng sau các thuật toán thay vì chỉ nhập chúng và chạy với nó. Xu hướng trong các mô hình học máy là một vấn đề lớn về đạo đức, xã hội và chính trị Ném dữ liệu vào các mô hình mà không xem xét cách giải quyết sự thiên vị là một cách tuyệt vời để gây rắc rối và tác động tiêu cực đến cuộc sống của mọi người. Thực hiện một số nghiên cứu và học cách dự đoán nơi có thể xảy ra sự thiên vị là một khởi đầu tốt để đi đúng hướng MatplotlibBất kể bạn đang làm gì với dữ liệu của mình, đến một lúc nào đó, bạn sẽ cần truyền đạt kết quả của mình cho người khác và Matplotlib là một trong những thư viện chính để biến điều đó thành hiện thực. Để biết phần giới thiệu, hãy xem Vẽ sơ đồ với Matplotlib. Trong phần tiếp theo, bạn sẽ thực hành một số thao tác thực hành với Matplotlib, nhưng bạn sẽ sử dụng nó để xử lý hình ảnh hơn là để tạo biểu đồ Ví dụ thực tế 2. Thao tác hình ảnh với MatplotlibNó luôn gọn gàng khi bạn đang làm việc với một thư viện Python và nó đưa cho bạn thứ gì đó hóa ra là một mảng NumPy cơ bản. Trong ví dụ này, bạn sẽ trải nghiệm điều đó trong tất cả vinh quang của nó Bạn sẽ tải một hình ảnh bằng Matplotlib, nhận ra rằng các hình ảnh RGB thực sự chỉ là các mảng 04 của 05 số nguyên, thao tác các byte đó và sử dụng lại Matplotlib để lưu hình ảnh đã sửa đổi đó sau khi bạn hoàn tấtTải xuống hình ảnh này để làm việc với Hình ảnh. Ilona IlyésĐó là hình ảnh một chú mèo con đáng yêu có kích thước 1920 pixel x 1299 pixel. Bạn sẽ thay đổi màu sắc của những điểm ảnh đó Tạo một tệp Python có tên là 06, sau đó thiết lập quá trình nhập của bạn và tải hình ảnh 4Đây là một khởi đầu tốt. Matplotlib có mô-đun riêng để xử lý hình ảnh và bạn sẽ dựa vào đó vì nó giúp dễ dàng đọc và ghi các định dạng hình ảnh Nếu bạn chạy mã này, thì bạn của bạn, mảng NumPy sẽ xuất hiện ở đầu ra 5Đó là hình ảnh có chiều cao 1299 pixel, chiều rộng 1920 pixel và ba kênh. mỗi cái cho các mức màu đỏ, lục và lam (RGB) Bạn muốn xem điều gì xảy ra khi bạn bỏ kênh R và G? 6Chạy lại và kiểm tra thư mục. Nên có một hình ảnh mới Is your mind blown yet? Do you feel the power? Images are just fancy arrays. Pixel chỉ là những con số But now, it’s time to do something a little more useful. Bạn sẽ chuyển đổi hình ảnh này sang thang độ xám. Tuy nhiên, chuyển đổi sang thang độ xám phức tạp hơn. Averaging the R, G, and B channels and making them all the same will give you an image that’s grayscale. Nhưng bộ não con người thật kỳ lạ và sự chuyển đổi đó dường như không xử lý đúng độ sáng của màu sắc Trên thực tế, tốt hơn là bạn nên tự mình xem. Bạn có thể sử dụng thực tế là nếu bạn xuất một mảng chỉ có một kênh thay vì ba kênh, thì bạn có thể chỉ định một bản đồ màu, được gọi là 07 trong thế giới Matplotlib. Nếu bạn chỉ định một 07, thì Matplotlib sẽ xử lý các phép tính độ dốc tuyến tính cho bạnLoại bỏ ba dòng cuối cùng trong tập lệnh của bạn và thay thế chúng bằng dòng này 7These new lines create a new array called 09, which is a copy of the 10 array that you’ve flattened along axis 2 by taking the average of all three channels. You’ve averaged all three channels and outputted something with R, G, and B values equal to that average. Khi R, G và B đều giống nhau, màu kết quả nằm trên thang độ xámNhững gì nó mang lại không phải là khủng khiếp But you can do better using the luminosity method. This technique does a weighted average of the three channels, with the mindset that the color green drives how bright an image appears to be, and blue can make it appear darker. Bạn sẽ sử dụng toán tử 11, là toán tử của NumPy để thực hiện tích mảng hai chiều truyền thống.Replace those last two lines in your script again 8Lần này, thay vì tính trung bình cố định, bạn đang hoàn thành tích vô hướng, đây là một loại kết hợp có trọng số của ba giá trị. Since the weights add up to one, it’s exactly equivalent to doing a weighted average of the three color channels Here’s the result The first image is a bit darker, and the edges and shadows are bolder. The second image is lighter and brighter, and the dark lines aren’t quite as bold. There you have it—you used Matplotlib and NumPy arrays to manipulate an image Loại bỏ các quảng cáoConclusionNo matter how many dimensions your data lives in, NumPy gives you the tools to work with it. You can store it, reshape it, combine it, filter it, and sort it, and your code will read like you’re operating on only one number at a time rather than hundreds or thousands In this tutorial, you learned
Don’t forget to check out the repository of NumPy code samples from throughout this tutorial. You can use it for reference and experiment with the examples to see how changing the code changes the outcome Nhận mã mẫu. Nhấp vào đây để lấy mã mẫu mà bạn sẽ sử dụng để tìm hiểu về NumPy trong hướng dẫn này Now you’re ready for the next steps in your data science journey. Whether you’re cleaning data, training neural networks, communicating using powerful plots, or aggregating data from the Internet of Things, these activities all start from the same place. the humble NumPy array Mark as Completed 🐍 Python Tricks 💌 Get a short & sweet Python Trick delivered to your inbox every couple of days. No spam ever. Unsubscribe any time. Curated by the Real Python team Send Me Python Tricks » About Ryan Palo Ryan is an author for Real Python, technical editor for books on Python, Hugo, and the command line, and a mold tooling designer. He loves Python, Ruby, Bash, and Rust. Also, physics, calculus, woodworking, and ukuleles. Looking for work » More about RyanEach tutorial at Real Python is created by a team of developers so that it meets our high quality standards. The team members who worked on this tutorial are Aldren Bartosz Geir Arne Joanna Gia-cốp Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Chuyên gia Kỹ năng Python trong thế giới thực Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bạn nghĩ sao? Đánh giá bài viết này Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì? Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi |