Biểu tượng cảm xúc cho hình ảnh 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ó

Trong hướng dẫn này, bạn sẽ học

  • Những khái niệm cốt lõi nào trong khoa học dữ liệu được NumPy thực hiện
  • Cách tạo mảng NumPy bằng nhiều phương thức khác nhau
  • Cách thao tác mảng NumPy để thực hiện các phép tính hữu ích
  • Cách áp dụng những kỹ năng mới này vào các vấn đề trong thế giới thự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 ích

Vì 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

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
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ới

Dưới đây là bốn lợi ích hàng đầu mà NumPy có thể mang lại cho mã của bạn

  1. Nhanh hơn. NumPy sử dụng các thuật toán được viết bằng C hoàn thành trong nano giây chứ không phải giây
  2. Ít vòng lặp hơn. NumPy giúp bạn giảm vòng lặp và không bị rối trong các chỉ số lặp
  3. mã rõ ràng hơn. Không có vòng lặp, mã của bạn sẽ trông giống phương trình mà bạn đang tính toán hơn
  4. Chất lượng tốt hơn. Có hàng nghìn cộng tác viên đang làm việc để giữ cho NumPy nhanh, thân thiện và không có lỗi

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áo

Cà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ến

Nế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

Biểu tượng cảm xúc cho hình ảnh python

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 Anaconda

Bả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 vào khoảng

$ pip install ipython
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ạp

Nếu bạn đã có một quy trình làm việc mà bạn thích sử dụng

$ pip install ipython
1, Pipenv, Thơ 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
$ pip install ipython
0 vào hỗn hợp. Kho lưu trữ gói
$ pip install ipython
0 tách biệt với PyPI và bản thân
$ pip install ipython
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ộng

Khi bạn đã cài đặt

$ pip install ipython
0, bạn có thể chạy lệnh
$ pip install ipython
6 cho các thư viện mà 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 1

Mặc dù dự án NumPy khuyên bạn nên sử dụng

$ pip install ipython
0 nếu bạn mới bắt đầu, nhưng không có gì sai khi tự quản lý môi trường của bạn và chỉ sử dụng
$ pip install ipython
1 cũ, Pipenv, Thơ hoặc bất kỳ thứ gì khác thay thế cho
$ pip install ipython
1 mà bạn yêu thích

Dưới đây là các lệnh để thiết lập với

$ pip install ipython
1

$ pip install ipython
4

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 JupyterLab

Mặ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

>>>

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])

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

$ pip install ipython

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ư

Biểu tượng cảm xúc cho hình ảnh python

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ó trở nê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

Biểu tượng cảm xúc cho hình ảnh python

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áo

Xin chào NumPy. Hướng dẫn kiểm tra điểm cong

Ví 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

  • Tạo mảng bằng cách sử dụng
    $ pip install ipython
    
    72
  • Xử lý các mảng hoàn chỉnh như các giá trị riêng lẻ để làm cho các phép tính được vector hóa dễ đọc hơn
  • Sử dụng các hàm NumPy tích hợp để sửa đổi và tổng hợp dữ liệu

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

>>>

$ pip install ipython
7

Đ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 1 nhập NumPy bằng cách sử dụng bí danh
    $ pip install ipython
    
    73, đây là một quy ước phổ biến giúp bạn tiết kiệm một vài lần nhấn phím
  • Dòng 3 tạo mảng NumPy đầu tiên của bạn, là mảng một chiều và có hình dạng
    $ pip install ipython
    
    74 và kiểu dữ liệu là
    $ pip install ipython
    
    75. Đừng lo lắng quá nhiều về những chi tiết này. Bạn sẽ khám phá chúng chi tiết hơn ở phần sau của hướng dẫn
  • Dòng 5 lấy điểm trung bình của tất cả các điểm bằng cách sử dụng
    $ pip install ipython
    
    76. Mảng có rất nhiều phương thức

Ở dòng 7, bạn tận dụng hai khái niệm quan trọng cùng một lúc

  1. Vector hóa
  2. Phát thanh truyền hình

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ỏ các vòng lặp

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
9 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,

$ pip install ipython
78 là một mảng các số có hình dạng
$ pip install ipython
74 và
$ pip install ipython
60 là một số vô hướng hoặc một số, về cơ bản có hình dạng
$ pip install ipython
61. 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.

$ pip install ipython
62 làm 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

$ pip install ipython
62, bạn vượt qua
$ pip install ipython
78, đả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.
$ pip install ipython
65. NumPy lấy giá trị đó và phát nó cho mọi phần tử trong
$ pip install ipython
66, đả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 tuyệt đối

Bắt đầu vào hình dạng. Hình dạng mảng và trục

Bâ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áo

Làm chủ hình dạng

Hì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à

$ pip install ipython
67 trả về một bộ có kích thước theo mỗi 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ư bạn mong đợi

Ví 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ư

>>>

$ pip install ipython
6

Tại đây, bạn sử dụng một phương thức

$ pip install ipython
68 có tên là
$ pip install ipython
69 để 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
$ pip install ipython
70, 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 theo

Hì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ục

Ví 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

$ pip install ipython
71 theo mặc định, không có đối số
$ pip install ipython
72 và cách nó thay đổi chức năng tùy thuộc vào
$ pip install ipython
72 mà bạn chỉ định khi bạn cung cấp đối số

>>>

$ pip install ipython
7

Theo mặc định,

$ pip install ipython
71 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à
$ pip install ipython
75,
$ pip install ipython
71 chọn giá trị lớn nhất trong mỗi nhóm trong số bốn bộ giá trị theo chiều dọc của
$ pip install ipython
77 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ều

Trê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ình

Cho đế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à

$ pip install ipython
78

Nế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 Python tích hợp sẵn

$ pip install ipython
79. Nếu một trong các mảng có kích thước
$ pip install ipython
78 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

$ pip install ipython
91 có dạng
$ pip install ipython
92 và mảng
$ pip install ipython
93 có dạng
$ pip install ipython
94. 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

  • Ở trục 0,
    $ pip install ipython
    
    91 có một
    $ pip install ipython
    
    96 và
    $ pip install ipython
    
    93 có một
    $ pip install ipython
    
    78, do đó,
    $ pip install ipython
    
    93 có thể được phát dọc theo trục đó
  • Ở trục 1,
    $ pip install ipython
    
    91 có số 1 và
    $ pip install ipython
    
    93 có số 6, do đó,
    $ pip install ipython
    
    91 có thể được phát dọc theo trục đó
  • Ở trục 2, 2 mảng có kích thước khớp nhau nên vận hành thuận lợi

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

>>>

$ pip install ipython
9

$ pip install ipython
91 có
$ pip install ipython
96 mặt phẳng, mỗi mặt phẳng có
$ pip install ipython
78 hàng và
$ pip install ipython
56 cột.
$ pip install ipython
93 chỉ có mặt phẳng
$ pip install ipython
78 với
$ pip install ipython
59 hàng và
$ pip install ipython
56 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úng

Cộng hai mảng lại với nhau

>>>

$ pip install ipython
5

Cách phát sóng hoạt động là NumPy sao chép mặt phẳng trong

$ pip install ipython
93 ba lần để bạn có tổng cộng bốn mặt phẳng, khớp với số lượng mặt phẳng trong
$ pip install ipython
91. Nó cũng sao chép một hàng trong
$ pip install ipython
91 năm lần với tổng số sáu lần, khớp với số hàng trong
$ pip install ipython
93. Sau đó, nó thêm từng phần tử trong mảng
$ pip install ipython
91 mới được mở rộng vào đối tác của nó ở cùng một vị trí trong
$ pip install ipython
93. Kết quả của mỗi phép tính hiển thị ở vị trí tương ứng của đầu ra

Ghi 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

$ pip install ipython
77

Mộ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 véc tơ 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áo

Hoạ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ục

Lậ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 (

$ pip install ipython
78) để 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 ma thuật của Dürer

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

>>>

$ pip install ipython
7

Bên trong vòng lặp

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
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 34

Mộ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

$ pip install ipython
400. Thay vào đó, phương pháp này cũng có thể lấy một đối số
$ pip install ipython
72 để thực hiện tính tổng theo trục

Tạo mặt nạ và lọc

Lự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à

$ pip install ipython
402 hoặc là
$ pip install ipython
403. 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ị
$ pip install ipython
402

Đâ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

>>>

$ pip install ipython
40

Bạ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

  • Đầu vào 4 tạo mặt nạ bằng cách thực hiện tính toán Boolean được véc tơ hóa, lấy từng phần tử và kiểm tra xem liệu nó có chia đều cho bốn không. Điều này trả về một mảng mặt nạ có cùng hình dạng với kết quả tính toán theo từng phần tử
  • Đầu vào 6 sử dụng mặt nạ này để lập chỉ mục vào mảng
    $ pip install ipython
    
    405 ban đầu. Điều này làm cho mảng mất đi hình dạng ban đầu, giảm nó xuống một chiều, nhưng bạn vẫn nhận được dữ liệu mà mình đang tìm kiếm
  • Đầu vào 7 cung cấp một lựa chọn mặt nạ thành ngữ, truyền thống hơn mà bạn có thể thấy trong tự nhiên, với một mảng lọc ẩn danh được tạo nội tuyến, bên trong dấu ngoặc chọn. Cú pháp này tương tự như cách sử dụng trong ngôn ngữ lập trình R

Quay lại đầu vào 2, bạn gặp ba khái niệm mới

  1. Sử dụng
    $ pip install ipython
    
    406 để tạo một mảng cách đều nhau
  2. Đặt
    $ pip install ipython
    
    407 của đầu ra
  3. Định hình lại một mảng với
    $ pip install ipython
    
    408

$ pip install ipython
406 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 âm mưu khoa học

Do phép tính cụ thể trong ví dụ này, việc có các số nguyên trong mảng

$ pip install ipython
405 sẽ 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à các số có dấu phẩy động. Bạn chỉ định một
$ pip install ipython
407 của
$ pip install ipython
412 để 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ày

Cuối cùng,

$ pip install ipython
413 có thể lấy
$ pip install ipython
408 làm một trong các kích thước thứ nguyên 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 giá trị
$ pip install ipython
415 và kích thước
$ pip install ipython
96 ở trục 0, trục 1 kết thúc với kích thước
$ pip install ipython
59

Đâ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

$ pip install ipython
418 của NumPy để tạo các giá trị ngẫu nhiên

>>>

$ pip install ipython
41

Tạ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

$ pip install ipython
419. Tại sao lại như vậy? . Nếu bạn cố gắng thực hiện
$ pip install ipython
422, 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ì
$ pip install ipython
423 đ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áo

Chuyển đổi, sắp xếp và nối

Cá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

>>>

$ pip install ipython
42

Khi 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

$ pip install ipython
424 trở thành mục
$ pip install ipython
425. Bạn cũng có thể sử dụng
$ pip install ipython
426 làm bí danh cho
$ pip install ipython
427

Khố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

>>>

$ pip install ipython
43

Việc bỏ qua đối số

$ pip install ipython
72 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
$ pip install ipython
429 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

$ pip install ipython
430, nhưng cũng có một số hàm trợ giúp đôi khi dễ đọc hơn

Dưới đây là một số ví dụ

>>>

$ pip install ipython
44

Đầu vào 4 và 5 hiển thị các chức năng trực quan hơn một chút

$ pip install ipython
431 và
$ pip install ipython
432. Đầu vào 6 và 7 hiển thị
$ pip install ipython
433 chung chung hơn, đầu tiên không có đối số
$ pip install ipython
72 và sau đó với
$ pip install ipython
435. 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
$ pip install ipython
436

Mộ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

$ pip install ipython
437,
$ pip install ipython
71,
$ pip install ipython
76 và
$ pip install ipython
440. 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ình

Ví dụ thực tế 1. Triển khai chuỗi Maclaurin

Bâ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ó 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à nhiều điểm tương đồng về hình ảnh bị thiếu, đ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

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
9 dài dòng hơn và tối ưu hóa giới hạn cuối cùng trông giống như các vòng lặp
$ pip install ipython
442

Sử 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

Biểu tượng cảm xúc cho hình ảnh python

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

$ pip install ipython
443

$ pip install ipython
45

Khi bạn chạy cái này, bạn sẽ thấy kết quả sau

$ pip install ipython
46

Khi 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

$ pip install ipython
444 lũy thừa của
$ pip install ipython
445 và chia cho
$ pip install ipython
446 hoặc giai thừa của
$ pip install ipython
445. 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
$ pip install ipython
448 thì không như vậy

Để sử dụng

$ pip install ipython
448 trong phép tính vector hóa, bạn phải sử dụng
$ pip install ipython
450 để tạo phiên bản vector hóa. Tài liệu về
$ pip install ipython
450 nói rằng nó không hơn gì một trình bao bọc mỏng áp dụng vòng lặp
In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
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ớn

Khi 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

$ pip install ipython
47

Đâ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

$ pip install ipython
445, đ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
In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
9, không có biến
$ pip install ipython
455 tạm thời. Đơn giản, rõ ràng, toán học

Cứ 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áo

Tối ưu hóa lưu trữ. Loại dữ liệu

Bâ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ố. $ pip install ipython 412, $ pip install ipython 457, $ pip install ipython 458 và $ pip install ipython 459

Vì 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

Tên# của BitsPython TypeNumPy TypeInteger64

$ pip install ipython
412
$ pip install ipython
461Booleans8
$ pip install ipython
457
$ pip install ipython
463Float64
$ pip install ipython
458
$ pip install ipython
465Complex128
$ pip install ipython
459
$ pip install ipython
467

Đâ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ố

$ pip install ipython
407

>>>

$ pip install ipython
48

NumPy tự động chuyển đổi loại độc lập với nền tảng của bạn

$ pip install ipython
469 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
$ pip install ipython
470. 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
$ pip install ipython
407 mà bạn đã cung cấp, thì NumPy sẽ sửa nó cho bạn hoặc gây ra lỗi

Các loại chuỗi. Kích thước Unicode

Cá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

>>>

$ pip install ipython
49

Ở đầu vào 2, bạn cung cấp một

$ pip install ipython
407 thuộc loại
$ pip install ipython
473 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
$ pip install ipython
474. 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à
$ pip install ipython
475 byte. ba ký tự Unicode 4 byte

Ghi 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,

$ pip install ipython
407
$ pip install ipython
477 có nghĩa là mỗi giá trị có kích thước bằng ba ký tự Unicode, với byte ít quan trọng nhất được lưu trữ trước trong bộ nhớ và byte quan trọng nhất được lưu trữ cuối cùng. Một
$ pip install ipython
407 của
$ pip install ipython
479 sẽ biểu thị điều ngược lại

Ví dụ: NumPy đại diện cho ký tự Unicode “🐍” với byte

$ pip install ipython
480 với
$ pip install ipython
407 của
$ pip install ipython
482 và
$ pip install ipython
483 với
$ pip install ipython
407 của
$ pip install ipython
485. 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
$ pip install ipython
407 cho cái này hoặc cái kia, sau đó gọi
$ pip install ipython
487 trên mảng của bạn

Nếu bạn muốn nghiên cứu 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 thư viện struct, 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 điều đó 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 như thế nào và tăng tất cả chúng lên kích thước

$ pip install ipython
488

Như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

$ pip install ipython
407

>>>

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
0

Thay 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áo

Mảng có cấu trúc

Ban đầ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

>>>

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
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

$ pip install ipython
407, 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.
$ pip install ipython
491 là trường Unicode gồm 10 ký tự và cả
$ pip install ipython
492 và
$ pip install ipython
493 đề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

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
2

Trong cả hai trường hợp, kết quả là một danh sách các tên có mức năng lượng vượt quá

$ pip install ipython
494

Bạn thậm chí có thể thêm chức năng

$ pip install ipython
495 bằng cách sử dụng
$ pip install ipython
496

>>>

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
3

Thao tác này sắp xếp dữ liệu theo

$ pip install ipython
493 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 SQL

Tìm hiểu thêm về các loại dữ liệu

Phầ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 đủ. Tài liệu NumPy trên

$ pip install ipython
498 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

$ pip install ipython
407, 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 đầu

Cuối cùng, NumPy

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
00 theo đúng nghĩa của nó là một đối tượng mạnh mẽ và bạn thực sự mới chỉ xem xét sơ bộ về 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
In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
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ấp

nhìn về phía trước. Thư viện mạnh mẽ hơn

Trong 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úc

pandas 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 đến một lúc nào đó, bạn sẽ

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
02 cùng lúc với bạn
In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
03

Tà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áo

scikit-học

Nế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. Với đủ dữ liệu, bạn có thể thực hiện phân loại, hồi quy, phân cụm và hơn thế nữa chỉ trong một vài dòng

Nếu bạn đã quen thuộc với môn toán, thì tài liệu scikit-learning có một danh sách hướng dẫn 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

Matplotlib

Bấ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 Matplotlib

Nó 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 hình ảnh RGB thực sự chỉ là mảng

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
04 của số nguyên
In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
05, thao tác với 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ất

Tải xuống hình ảnh này để làm việc với

Biểu tượng cảm xúc cho hình ảnh python
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à

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
06, sau đó thiết lập quá trình nhập của bạn và tải hình ảnh

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
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

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
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?

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
6

Chạy lại và kiểm tra thư mục. Nên có một hình ảnh mới

Biểu tượng cảm xúc cho hình ảnh python

Là tâm trí của bạn thổi chưa? . Pixel chỉ là những con số

Nhưng bây giờ, đã đến lúc làm điều gì đó hữu ích hơn một chút. 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. Tính trung bình các kênh R, G và B và làm cho tất cả chúng giống nhau sẽ cho bạn một hình ảnh có thang độ xám. 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à

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
07 trong thế giới Matplotlib. Nếu bạn chỉ định một
In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
07, thì Matplotlib sẽ xử lý các tính toán gradient tuyến tính cho bạn

Loạ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

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
7

Những dòng mới này tạo ra một mảng mới có tên là

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
09, là bản sao của mảng
In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
10 mà bạn đã làm phẳng dọc theo trục 2 bằng cách lấy giá trị trung bình của cả ba kênh. Bạn đã tính trung bình cho cả ba kênh và xuất ra thứ gì đó có giá trị R, G và B bằng với mức trung bình đó. Khi R, G và B đều giống nhau, màu kết quả nằm trên thang độ xám

Những gì nó mang lại không phải là khủng khiếp

Biểu tượng cảm xúc cho hình ảnh python

Nhưng bạn có thể làm tốt hơn bằng cách sử dụng phương pháp độ sáng. Kỹ thuật này thực hiện trung bình có trọng số của ba kênh, với suy nghĩ rằng màu xanh lá cây quyết định độ sáng của hình ảnh và màu xanh lam có thể làm cho hình ảnh tối hơn. Bạn sẽ sử dụng toán tử

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
11, là toán tử của NumPy để thực hiện tích mảng hai chiều truyền thống

Thay thế hai dòng cuối cùng trong tập lệnh của bạn một lần nữa

In [1]: import numpy as np

In [2]: digits = np.array([
   ...:     [1, 2, 3],
   ...:     [4, 5, 6],
   ...:     [6, 7, 9],
   ...: ])

In [3]: digits
Out[3]:
array([[1, 2, 3],
       [4, 5, 6],
       [6, 7, 9]])
8

Lầ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ị. Vì các trọng số cộng lại thành một, nên nó hoàn toàn tương đương với việc lấy trung bình có trọng số của ba kênh màu

Đây là kết quả

Biểu tượng cảm xúc cho hình ảnh python

Hình ảnh đầu tiên tối hơn một chút, các cạnh và bóng đậm hơn. Hình ảnh thứ hai sáng hơn và sáng hơn và các đường tối không quá đậm. Vậy là xong rồi—bạn đã sử dụng các mảng Matplotlib và NumPy để thao tác với một hình ảnh

Loại bỏ các quảng cáo

Sự kết luận

Cho dù dữ liệu của bạn có bao nhiêu thứ nguyên, NumPy cung cấp cho bạn các công cụ để làm việc với nó. Bạn có thể lưu trữ, định hình lại, kết hợp, lọc và sắp xếp mã và mã của bạn sẽ đọc giống như bạn đang chỉ thao tác trên một số tại một thời điểm thay vì hàng trăm hoặc hàng nghìn

Trong hướng dẫn này, bạn đã học

  • Các khái niệm cốt lõi của khoa học dữ liệu được thực hiện bởi NumPy
  • Cách tạo mảng NumPy bằng nhiều phương thức khác nhau
  • Cách thao tác mảng NumPy để thực hiện các phép tính hữu ích
  • Cách áp dụng những kỹ năng mới này vào các vấn đề trong thế giới thực

Đừng quên kiểm tra kho lưu trữ các mẫu mã NumPy trong suốt 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

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

Bây giờ bạn đã sẵn sàng cho các bước tiếp theo trong hành trình khoa học dữ liệu của mình. Cho dù bạn đang làm sạch dữ liệu, đào tạo mạng lưới thần kinh, giao tiếp bằng cách sử dụng các biểu đồ mạnh mẽ hay tổng hợp dữ liệu từ Internet of Things, tất cả các hoạt động này đều bắt đầu từ cùng một nơi. mảng NumPy khiêm tốn

Đánh dấu là đã hoàn thành

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Biểu tượng cảm xúc cho hình ảnh python

Gửi cho tôi thủ thuật Python »

Giới thiệu về Ryan Palo

Biểu tượng cảm xúc cho hình ảnh python
Biểu tượng cảm xúc cho hình ảnh python

Ryan là tác giả của Real Python, biên tập viên kỹ thuật cho sách về Python, Hugo và dòng lệnh, đồng thời là nhà thiết kế khuôn mẫu. Anh ấy yêu Python, Ruby, Bash và Rust. Ngoài ra, vật lý, tính toán, chế biến gỗ và đàn ukulele. Đang tìm việc

» Thông tin thêm về Ryan


Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Biểu tượng cảm xúc cho hình ảnh python

Aldren

Biểu tượng cảm xúc cho hình ảnh python

Bartosz

Biểu tượng cảm xúc cho hình ảnh python

Geir Arne

Biểu tượng cảm xúc cho hình ảnh python

Joanna

Biểu tượng cảm xúc cho hình ảnh python

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

Biểu tượng cảm xúc cho hình ảnh python

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 Pythonista chuyên gia

Nâng cao kỹ năng Python của bạn »

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 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ẻ Email

Bà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. Nhận các mẹo để đặt câu hỏi hay 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