Hướng dẫn dùng numpy.empty python
Trong bài này ta sẽ đào sâu và tìm hiểu kỹ về cách tạo mảng cơ bản trong NumPy, cũng như sự hiệu quả của việc dùng NumPy so với List trong việc lưu trữ và thao tác với mảng. Show Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. Python là một ngôn ngữ động (dynamic language), do vậy việc khai báo biến trên Python cũng vô cùng đơn giản, ta xét đoạn code sau: Trong C int a = 2; if (a % 2 == 0) { printf("%d la so chan", a); } Python a = 2 if a % 2 == 0: print(a, “la so chan”) Vì C là ngôn ngữ tĩnh (static language) nên các biến phải khai báo rõ ràng. Bạn có thể thấy trước biến a cần có tiền tố int (để khai báo rằng biến a thuộc kiểu dữ liệu integer) trong khi Python thì không cần điều này. Chẳng hạn: Bài viết này được đăng tại [free tuts .net] Python b = 5 b = “nam” C/C++ int b = 5; b = “nam” // Lỗi Việc này khiến cho việc sử dụng Python trở nên tiện dụng hơn nhiều so với C, dù phải đánh đổi về hiệu năng. Ta không thể làm việc nhanh chóng mà phải để ý đến việc khai báo biến này thuộc kiểu dữ liệu này, kiểu dữ liệu kia, chưa kể sẽ xuất hiện hàng tá lỗi nếu set dữ liệu không cùng kiểu. Đó cũng là lý do mà Python trở thành ngôn ngữ phổ biến nhất cho Data Science - đơn giản và tiện dụng. Trong các phần tiếp, ta sẽ tìm hiểu sâu về cơ chế hình thành nên 1 biến trong Python, đây là một khía cạnh quan trọng mà nhiều người hay bỏ qua, hiểu được những vấn đề cốt lõi này sẽ giúp việc phân tích dữ liệu một cách hiệu quả hơn. 1. Một biến trong Python được hình thành như thế nào?Python vốn dĩ được viết trên C, do vậy hiển nhiên tất cả các biến của Python mà ta khai báo sẽ được khai báo trên C, mà ở đây chính là kiểu cấu trúc (struct). Có thể bạn quan tâmKhi ta khai báo một số nguyên trên Python, chẳng hạn x = 100, thì nó không phải là số nguyên “thuần”, mà nó bản chất là một con trỏ và trỏ đến một struct trong C. Nếu tìm trong mã nguồn của Python 3 (CPython), một biến số nguyên được định nghĩa như thế này: struct _longobject { long ob_refcnt; PyTypeObject *ob_type; size_t ob_size; long ob_digit[1]; }; Dễ thấy một biến số nguyên của Python gồm 4 phần:
Ảnh dưới mô tả cách mà số nguyên trong C và Python được lưu trong bộ nhớ:
Từ đó, ta có thể thấy rõ được sự khác biệt của việc khai báo dữ liệu số nguyên trên Python so với C:
2. Cơ chế của List trong Python và sự hạn chếSau khi đã hiểu về cấu trúc của một biến trong Python, ta sẽ nhắc qua về List trong Python để nói về sự hạn chế của nó. Chúng ta có thể tạo một mảng số nguyên trên Python như sau: In [1]: A = list(range(5)) A Out [1]: [0, 1, 2, 3, 4] In[2]: type(A[0]) Out[2]: int Hoặc một mảng với nhiều kiểu dữ liệu: In[3]: A1 = [True, "Freetuts", 1, 2.5] [type(i) for i in A1] Out[3]: [bool, str, int, float] Việc khai báo một mảng với nhiều kiểu dữ liệu đem tới nhiều sự thuận lợi, tuy nhiên ta có thể thấy rõ một vấn đề sau: Nếu trong mảng đều có chung kiểu dữ liệu thì sẽ tồn tại rất nhiều thông tin thừa (tham chiếu, kiểu dữ liệu,... trong PyObject_HEAD). Do đó, List không thực sự tốt nếu ta cần xử lý các mảng dữ liệu nếu tất cả cùng chung một kiểu dữ liệu (mà hầu hết khi xử lý dữ liệu trong Data Science, mỗi mảng sẽ chỉ có một kiểu dữ liệu duy nhất). Vì vậy, sẽ hiệu quả hơn nhiều nếu như ta cố định toàn bộ kiểu dữ liệu vào trong một mảng nếu mảng đó chung kiểu dữ liệu (fixed-type arrays). Dù phải đánh đổi sự tiện lợi nhưng nó sẽ giúp thao tác và lưu trữ hiệu quả hơn, và đó chính là cách mà NumPy làm việc. 3. Tạo mảng với NumpyTạo từ ListChúng ta có thể dùng nhiều cách để tạo fixed-type arrays trong Python, chẳng hạn từ Python 3.3 đi kèm với thư viện array: In[4]: import array A = list(range(10)) A1 = array.array('i', L) A1 Out[4]: array('i', [0, 1, 2, 3, 4]) Note: “i” chính là viết tắt cho việc mảng chứa kiểu dữ liệu integers Đây là một thư viện khá hữu ích, tuy nhiên nó chỉ mới cung cấp khả năng lưu trữ. Với ndarray - một object cốt lõi của NumPy thì ngoài lưu trữ thì nó còn có khả năng thao tác với dữ liệu (ta sẽ nói ở các bài sau). Có rất nhiều cách để tạo mảng với NumPy, đầu tiên ta sẽ import NumPy vào notebook: In[5]: import numpy as np Đầu tiên, ta có thể tạo mảng từ List bằng cách dùng np.array: a = 2 if a % 2 == 0: print(a, “la so chan”)0 Vì mảng NumPy bắt buộc phải cùng kiểu dữ liệu, nên nếu khác thì nó sẽ cố ép sao cho toàn bộ mảng cùng kiểu, chẳng hạn như: a = 2 if a % 2 == 0: print(a, “la so chan”)1 Ta thấy toàn bộ kiểu dữ liệu đã chuyển sang số thực để đồng bộ. Ngoài ra ta có thể khai báo trước kiểu dữ liệu của mảng: a = 2 if a % 2 == 0: print(a, “la so chan”)2 Quan trọng nhất, mảng NumPy có thể đa chiều, không giống như List chỉ có thể lưu trữ dữ liệu 1 chiều, ví dụ: a = 2 if a % 2 == 0: print(a, “la so chan”)3 Tạo từ các hàm có sẵnNumPy hỗ trợ rất nhiều hàm có sẵn để tạo mảng, tiện lợi hơn nhiều so với tạo từ List. Ta sẽ xem xét 1 số ví dụ: Tạo mảng có 5 phần tử mà mọi giá trị đều bằng 0 a = 2 if a % 2 == 0: print(a, “la so chan”)4 Tạo mảng đa chiều kích thước 5x5 mà mọi giá trị đều = 1 a = 2 if a % 2 == 0: print(a, “la so chan”)5 Tạo mảng đa chiều kích thước 3x3 mà mọi giá trị đều = 100 a = 2 if a % 2 == 0: print(a, “la so chan”)6 Ta sẽ đến với một số ví dụ nâng cao hơn, chẳng hạn: Dùng np.arange để tạo mảng tuyến tính, bắt đầu bằng 0, kết thúc bằng 10, bước nhảy là 2: a = 2 if a % 2 == 0: print(a, “la so chan”)7 Dùng np.linspace để tạo mảng tuyến tính với 5 phần tử và các phần tử có giá trị từ 0 đến 2: a = 2 if a % 2 == 0: print(a, “la so chan”)8 Tạo mảng 3x3 phân bố đều với các phần tử có giá trị ngẫu nhiên giữa 0 và 1: a = 2 if a % 2 == 0: print(a, “la so chan”)9 Tạo một mảng 3x3 với các phần tử ngẫu nhiên được phân phối chuẩn với giá trị trung bình là 0 và độ lệch chuẩn 1 b = 5 b = “nam”0 Tạo một mảng 3x3 các số nguyên ngẫu nhiên trong khoảng [0, 10) b = 5 b = “nam”1 Tạo ma trận đơn vị kích thước 3x3: b = 5 b = “nam”2 Tạo mảng rỗng gồm 5 phần tử, giá trị của 5 phần tử này có thể là bất cứ giá trị nào đã lưu trên bộ nhớ trước đó: b = 5 b = “nam”3 4. Kiểu dữ liệu trong NumPyTrong NumPy có nhiều kiểu dữ liệu khác nhau, trong bảng dưới là danh sách các kiểu dữ liệu hỗ trợ bởi NumPy (sẽ không lạ lắm với những người đã từng sử dụng C) Các kiểu dữ liệu cơ bản của NumPy: Kiểu dữ liệuChú thíchbool_Kiểu Boolean, giá trị True hoặc Falseint_Kiểu số nguyên mặc định (giống C long; thường là int64 hoặc int32intcGiống hệt với int C (thường là int32 hoặc int64)intpSố nguyên được sử dụng để lập chỉ mục (giống như C ssize_t; thông thường là int32 hoặc int64)int8Byte (–128 to 127)int16Số nguyên (–32768 đến 32767)int32Số nguyên (–2147483648 đến 2147483647)int64Số nguyên (–9223372036854775808 đến 9223372036854775807)uint8Số nguyên không dấu (0 đến 255)uint16Số nguyên không dấu (0 đến 65535)uint32Số nguyên không dấu (0 đến 4294967295)uint64Số nguyên không dấu (0 đến 18446744073709551615)float_Viết tắt cho float64float16Half-precision float: sign bit, 5 bits exponent, 10 bits mantissafloat32Single-precision float: sign bit, 8 bits exponent, 23 bits mantissafloat64Double-precision float: sign bit, 11 bits exponent, 52 bits mantissacomplex_Viết tắt cho complex128complex64Số phức, được biểu diễn bởi 32 bit floatscomplex128Số phức, được biểu diễn bởi 64 bit floats* Lưu ý: Ta có thể định dạng kiểu dữ liệu của mảng bằng 2 cách: b = 5 b = “nam”4 Hoặc b = 5 b = “nam”5 5. Tổng kếtQua bài trên, ta đã tìm hiểu được cơ bản về NumPy, về cách tạo mảng, kiểu dữ liệu, cũng như hiểu về cách thức mà một biến trong Python được hình thành. Đây là một bài rất quan trọng, các bạn nên thử trên notebook tất cả các kiểu tạo mảng trên để có thể nắm bắt được các phương thức mà NumPy hỗ trợ. Trong bài tiếp theo, ta sẽ cùng nhau khám phá các thao tác xử lý mảng với NumPy. Hẹn gặp các bạn ở bài tiếp theo nhé. |
Bài Viết Liên Quan
Hướng dẫn dùng sql arrays trong PHP
Mảng Chạy thử, kết quả export của biến $names array ( 0 => An, 1 => Minh, 2 => Long, ) 9 là một loại biến đặc biệt, trong nó giữ nhiều giá trị. Mỗi ...
Python động cơ vật lý 3d
Pymunk là một thư viện vật lý 2d Pythonic dễ sử dụng, có thể được sử dụng bất cứ khi nào bạn cần vật lý vật thể cứng 2d từ Pythonthư viện python ...
Chạy lệnh sudo trong Python
edlentzLập trình viên tên TimBài đăng. 11Chủ đề. 7Đã tham gia. Tháng 10 năm 2017Danh tiếng. 0#112-11-2020, 02. 56 CHTôi có một tập lệnh sẽ chạy một số lệnh ...
Lễ hội kim loại 2023 Đức
Lễ hội Rock Hard đã công bố các tiết mục đầu tiên cho năm 2023. Lễ hội cũng đang kỷ niệm hai ngày kỷ niệm vào năm tớiLễ hội Rock Hard kỷ niệm sinh nhật ...
Ngày bây giờ php mysql
Bất cứ ai làm việc với dữ liệu sẽ gặp phải các giá trị ngày tháng tại một số điểm. Ngày là cần thiết vì nhiều lý do. Nếu bạn là Nhà phát triển ...
Who is playing at the Super Bowl 2023
Mùa bóng đá đã đến và mọi đội đang chiến đấu để có cơ hội cạnh tranh trong trận đấu cuối cùng. Super Bowl LVII, nhưng Rihanna đã đạt được vị trí ...
Xác thực phương thức phản ứng-bootstrap
Đó là nó từ hướng dẫn này. Bạn có thể tiếp tục học hỏi điều này và thay vì chỉ đóng phương thức, bạn có thể thực hiện những việc khác như ...
Định dạng thời gian trong javascript là gì?
Thao tác ngày giờ nổi tiếng là khó. Các nhà phát triển gặp phải quy tắc múi giờ, giây nhảy vọt, sự khác biệt về định dạng dành riêng cho ngôn ngữ nên ...
Chương trình Python để chuyển đổi feet thành mét
Với khoảng cách tính bằng mét hoặc yard, nhiệm vụ ở đây là tạo một chương trình Python chuyển đổi khoảng cách tính bằng mét thành yard và ngược lạiví ...
Game điều khiển với python
Tại đây, một chương trình đơn giản trong Python có thể hiển thị một số khái niệm cơ bản quan trọng trong việc thiết lập máy tính. Chương trình mô phỏng ...
Bạn có thể thao tác css với javascript không?
Khi nói đến việc tạo kiểu cho một số nội dung, cách phổ biến nhất là tạo quy tắc kiểu và để bộ chọn của nó nhắm mục tiêu một phần tử hoặc nhiều ...
Cách lấy dữ liệu từ MongoDB bằng Reacjs
API là viết tắt của Giao diện lập trình ứng dụng. Api web phổ biến nhất được sử dụng là API chuyển trạng thái đại diện hoặc API RESTful. API web được ...
Làm cách nào để nhận các giá trị mảng duy nhất bằng hàm PHP Array_unique?
Tiếp tục đọc để tạo một hệ thống kiểm tra danh tính không cho phép nhiều mục nhập mảng dựa trên các giá trị lặp lạinội dungPHP array_unique là gì?Hàm ...
Cách tìm số lặp lại trong Excel
Nếu bạn có một danh sách dữ liệu trong một trang tính với các giá trị duy nhất và giá trị trùng lặp và bạn không chỉ muốn đếm tần suất của các giá ...
Làm cách nào để sử dụng mã hóa trong Laravel?
Trong dự án của bạn, bạn có thể lưu trữ một số dữ liệu cá nhân hoặc thông tin xác thực nhạy cảm trong cơ sở dữ liệu của mình. Nếu một người không ...
Lệnh nào được sử dụng để hiển thị biểu đồ trong python?
là tập hợp các hàm giúp matplotlib hoạt động giống như MATLAB. Mỗi hàm plt.plot([1, 2, 3, 4], [1, 4, 9, 16]) 8 thực hiện một số thay đổi đối với một hình. e. g. ...
Bán Chevrolet Camaro SS 2023
Hộp số, Số tự động 10 cấp, Gói Rs, Gói Công nghệ, Sọc trùm đầu màu đen sa tanh với Dấu băm đỏ, Bộ kẹp phanh, Sơn đỏ, Gói đai ốc và khóa bánh xe màu ...
Fiscal year 2023 Calendar Excel
Microsoft Excel là một nơi tuyệt vời để tạo lịch, vì nó rất dễ truy cập và rất dễ nhập thông tin vàoTrên trang này, bạn sẽ tìm thấy một số loại mẫu ...
Số cuộc gọi giả python
Plugin này cài đặt một bộ cố định mô phỏng là một trình bao bọc mỏng xung quanh API vá do gói mô phỏng cung cấp, nhưng với lợi ích là không phải lo lắng ...
Bạn có thể vlookup nhiều cột trên google sheet không?
Có hai khía cạnh đối với việc sử dụng Vlookup với nhiều tiêu chí trong Google Trang tính. Hãy để tôi minh họa tương tự1. Vlookup nhiều tiêu chí từ một cột ...