Hướng dẫn what is numpy in python? - numpy trong python là gì?

Numpy là gói cơ bản cho điện toán khoa học trong Python. Đó là một thư viện Python cung cấp một đối tượng mảng đa chiều, các đối tượng có nguồn gốc khác nhau (như mảng và ma trận đeo mặt nạ), và một loại thói quen cho các hoạt động nhanh trên các mảng, bao gồm toán học, logic, thao tác hình dạng, sắp xếp, chọn, I/O , Biến đổi Fourier rời rạc, Đại số tuyến tính cơ bản, Hoạt động thống kê cơ bản, mô phỏng ngẫu nhiên và nhiều hơn nữa.

Cốt lõi của gói Numpy, là đối tượng Ndarray. Điều này gói gọn các mảng N-chiều của các loại dữ liệu đồng nhất, với nhiều hoạt động được thực hiện trong mã biên dịch để thực hiện. Có một số khác biệt quan trọng giữa các mảng Numpy và trình tự Python tiêu chuẩn:

  • Các mảng Numpy có kích thước cố định tại Sáng tạo, không giống như danh sách Python (có thể phát triển động). Thay đổi kích thước của một ndarray sẽ tạo ra một mảng mới và xóa bản gốc.

  • Các phần tử trong một mảng numpy đều được yêu cầu thuộc cùng một loại dữ liệu, và do đó sẽ có cùng kích thước trong bộ nhớ. Ngoại lệ: người ta có thể có các mảng (python, bao gồm cả numpy), do đó cho phép các mảng của các yếu tố có kích thước khác nhau.

  • Các mảng Numpy tạo điều kiện cho toán học tiên tiến và các loại hoạt động khác trên số lượng lớn dữ liệu. Thông thường, các hoạt động như vậy được thực hiện hiệu quả hơn và với ít mã hơn có thể bằng cách sử dụng các chuỗi tích hợp Python.

  • Một lượng lớn các gói dựa trên Python khoa học và toán học đang sử dụng các mảng numpy; Mặc dù các đầu vào chuỗi python này thường hỗ trợ python, nhưng chúng chuyển đổi đầu vào đó thành các mảng numpy trước khi xử lý và chúng thường xuất ra các mảng numpy. Nói cách khác, để sử dụng hiệu quả nhiều (thậm chí hầu hết) phần mềm dựa trên python khoa học/toán học ngày nay, chỉ cần biết cách sử dụng các loại trình tự tích hợp Python, là không đủ-người ta cũng cần biết cách sử dụng các mảng numpy.

Các điểm về kích thước và tốc độ trình tự đặc biệt quan trọng trong điện toán khoa học. Như một ví dụ đơn giản, hãy xem xét trường hợp nhân mỗi phần tử thành trình tự 1 chiều với phần tử tương ứng trong một chuỗi khác có cùng độ dài. Nếu dữ liệu được lưu trữ trong hai danh sách Python, ab, chúng ta có thể lặp lại từng yếu tố:

c = []
for i in range(len(a)):
    c.append(a[i]*b[i])

Điều này tạo ra câu trả lời chính xác, nhưng nếu ab mỗi người chứa hàng triệu số, chúng tôi sẽ trả giá cho sự thiếu hiệu quả của việc lặp trong Python. Chúng tôi có thể hoàn thành cùng một nhiệm vụ nhanh hơn nhiều trong C bằng cách viết (để rõ ràng, chúng tôi bỏ qua các khai báo và khởi tạo biến, phân bổ bộ nhớ, v.v.)

for (i = 0; i < rows; i++) {
  c[i] = a[i]*b[i];
}

Điều này tiết kiệm tất cả các chi phí liên quan đến việc diễn giải mã Python và thao túng các đối tượng Python, nhưng với chi phí của các lợi ích thu được từ mã hóa trong Python. Hơn nữa, công việc mã hóa cần có tăng theo chiều dữ liệu của chúng tôi. Ví dụ, trong trường hợp của mảng 2-D, mã C (rút gọn như trước)

for (i = 0; i < rows; i++) {
  for (j = 0; j < columns; j++) {
    c[i][j] = a[i][j]*b[i][j];
  }
}

Numpy mang đến cho chúng ta những điều tốt nhất của cả hai thế giới: các hoạt động từng phần tử là chế độ mặc định của Cameron khi có liên quan đến NDArray, nhưng hoạt động từng phần tử được thực hiện nhanh chóng bằng mã C được biên dịch sẵn. Trong numpy

Có những gì các ví dụ trước đó làm, với tốc độ gần-C, nhưng với tính đơn giản của mã, chúng tôi mong đợi từ một cái gì đó dựa trên Python. Thật vậy, thành ngữ Numpy thậm chí còn đơn giản hơn! Ví dụ cuối cùng này minh họa hai tính năng của Numpy, là cơ sở của phần lớn sức mạnh của nó: vector hóa và phát sóng.

Tại sao Numpy nhanh?#

Vectorization mô tả sự vắng mặt của bất kỳ vòng lặp, lập chỉ mục rõ ràng, v.v., trong mã - tất nhiên, những điều này đang diễn ra, chỉ là những điều đằng sau hậu trường, trong mã C được tối ưu hóa, được biên dịch sẵn. Mã vectorized có nhiều lợi thế, trong đó là:

  • Mã vectorized ngắn gọn và dễ đọc hơn

  • ít dòng mã nói chung có nghĩa là ít lỗi hơn

  • Mã gần giống với ký hiệu toán học tiêu chuẩn hơn (giúp dễ dàng hơn, thông thường, mã hóa chính xác các cấu trúc toán học)

  • kết quả của Vectorization trong mã Pythonic của nhiều người khác. Nếu không có vector hóa, mã của chúng tôi sẽ bị vấy bẩn không hiệu quả và khó đọc các vòng lặp for.

Phát sóng là thuật ngữ được sử dụng để mô tả hành vi theo phần tử tiềm ẩn của các hoạt động; Nói chung, trong tất cả các hoạt động, không chỉ các hoạt động số học, mà còn logic, thông thái, chức năng, v.v. Hơn nữa, trong ví dụ trên, ab có thể là các mảng đa chiều có cùng hình, hoặc một vô hướng và một mảng, hoặc thậm chí hai mảng với các hình dạng khác nhau, với điều kiện là mảng nhỏ hơn có thể mở rộng Theo cách mà phát sóng kết quả là không rõ ràng. Đối với các quy tắc chi tiết về các quy tắc phát sóng, xem phát sóng.Broadcasting.

Ai khác sử dụng Numpy?#

Numpy hoàn toàn hỗ trợ một cách tiếp cận hướng đối tượng, bắt đầu, một lần nữa, với Ndarray. Ví dụ, Ndarray là một lớp, sở hữu nhiều phương thức và thuộc tính. Nhiều phương pháp của nó được nhân đôi bởi các chức năng trong không gian tên Numpy ngoài cùng ngoài, cho phép lập trình viên mã hóa theo bất kỳ mô hình nào họ thích. Tính linh hoạt này đã cho phép phương ngữ mảng numpy và lớp Ndarray Numpy trở thành ngôn ngữ phi thực tế của trao đổi dữ liệu đa chiều được sử dụng trong Python.

Numpy đại diện cho điều gì?

Numpy là viết tắt của Python số và nó là một thư viện điện toán khoa học cốt lõi trong Python.Nó cung cấp các đối tượng mảng đa chiều hiệu quả và các hoạt động khác nhau để hoạt động với các đối tượng mảng này.

Sự khác biệt giữa Numpy và Pandas là gì?

Mô -đun PANDAS chủ yếu hoạt động với dữ liệu bảng, trong khi mô -đun Numpy hoạt động với dữ liệu số.Gấu trúc cung cấp một số bộ công cụ mạnh mẽ như DataFrame và Sê -ri chủ yếu được sử dụng để phân tích dữ liệu, trong khi trong mô -đun Numpy cung cấp một đối tượng mạnh mẽ gọi là Array.. The Pandas provides some sets of powerful tools like DataFrame and Series that mainly used for analyzing the data, whereas in NumPy module offers a powerful object called Array.

Sự khác biệt giữa Numpy và Python là gì?

Các mảng Numpy có kích thước cố định tại Sáng tạo, không giống như danh sách Python (có thể phát triển động).Thay đổi kích thước của một ndarray sẽ tạo ra một mảng mới và xóa bản gốc.Các phần tử trong một mảng numpy đều được yêu cầu thuộc cùng một loại dữ liệu, và do đó sẽ có cùng kích thước trong bộ nhớ. (which can grow dynamically). Changing the size of an ndarray will create a new array and delete the original. The elements in a NumPy array are all required to be of the same data type, and thus will be the same size in memory.