NumPy là một gói thiết yếu trong hệ sinh thái khoa học dữ liệu Python, cung cấp nhiều hàm để thao tác dữ liệu số một cách hiệu quả. Trong số đó, hàm linspace() thường được dùng để tạo ra các giá trị cách đều trong một khoảng xác định, trở thành công cụ hữu ích cho các tác vụ cần dải giá trị số chính xác, như trực quan hóa dữ liệu và mô hình hóa toán học. Trong hướng dẫn này, tôi sẽ giới thiệu chi tiết cách dùng hàm linspace().
Câu trả lời ngắn: Cách dùng np.linspace()
Nếu bạn đang vội, đây là phần giải thích nhanh nhất về hàm linspace(). Hàm linspace() của NumPy tạo ra một mảng các số cách đều trong một khoảng xác định. Ở đây, chẳng hạn, chúng ta tạo một mảng bắt đầu từ 0 và kết thúc tại 100, với khoảng gồm 5 số. Như bạn có thể dự đoán, nó trả về một mảng [0, 25, 75, 100].
import numpy as np
# Basic usage of linspace to create an array from 0 to 100 with 5 elements
linspace_example = np.linspace(0,100.0,5)
linspace_example # Return example# Output: array([ 0., 25., 50., 75., 100.])Được hỗ trợ bởi
Vì sao dùng hàm linspace() của NumPy?
Hàm linspace() là một phương pháp đơn giản và hiệu quả để tạo ra các giá trị phân bố tuyến tính, cung cấp giải pháp hữu ích cho nhiều bối cảnh cần dải giá trị số cụ thể, như trực quan hóa dữ liệu, mô phỏng, và thậm chí tinh chỉnh thuật toán. Dưới đây là một vài ví dụ về nơi có thể dùng linspace():
Nhiệm vụ trực quan hóa dữ liệu: Ví dụ, khi tạo biểu đồ đường thể hiện quỹ đạo của một vệ tinh theo thời gian, linspace() có thể được dùng để tạo các khoảng thời gian tại đó dữ liệu vị trí được lấy mẫu, đảm bảo đường vẽ mượt và liên tục trên đồ thị.
Mô phỏng: Trong mô hình tài chính, để đánh giá tác động của việc thay đổi lãi suất lên định giá trái phiếu, linspace() có thể tạo ra một dải lãi suất từ mức thấp nhất đến mức dự kiến cao nhất, cho phép phân tích toàn diện trên toàn bộ phổ giá trị.
Nghiên cứu khoa học: Khi nghiên cứu tác động của hiện tượng ấm lên toàn cầu đối với các mũ băng ở cực, các nhà nghiên cứu có thể dùng linspace() để tạo ra một chuỗi các khoảng thời gian cách đều trong nhiều thập kỷ. Ở mỗi khoảng, họ có thể mô phỏng mức tăng nhiệt độ trung bình toàn cầu và tác động của nó đến tốc độ tan băng.
Cú pháp và cách dùng linspace() của NumPy kèm ví dụ
Như đã đề cập, hàm linspace() tạo ra các giá trị phân bố tuyến tính, hữu ích cho nhiều phép tính số. Trước khi đi vào ví dụ, hãy xem các đối số khác nhau mà bạn có thể dùng với linspace().
Các đối số của linspace() trong NumPy
start: Giá trị bắt đầu của dãy.
stop: Giá trị kết thúc của dãy.
num (tùy chọn): Số lượng mẫu trong khoảng. Mặc định là 50 và phải không âm.
endpoint (tùy chọn): Nếu True (mặc định), stop là mẫu cuối cùng. Nếu False, giá trị stop sẽ không được đưa vào dãy do linspace() tạo ra. Điều này có nghĩa hàm sẽ tạo các mẫu cách đều trong khoảng từ start đến ngay trước stop, thực chất là loại trừ giá trị stop khỏi dãy. Điều này hữu ích khi bạn cần một dải giá trị tiến gần nhưng không chạm tới điểm cuối, cho phép kiểm soát linh hoạt hơn phạm vi giá trị tạo ra.
retstep (tùy chọn): Nếu True, trả về (samples, step), trong đó step là khoảng cách giữa các mẫu.
dtype (tùy chọn): Kiểu của mảng đầu ra. Nếu không chỉ định, dtype sẽ được suy từ các đối số start và stop.
axis (tùy chọn): Trục trong kết quả để lưu các mẫu, chỉ áp dụng khi làm việc với mảng đa chiều.
Tạo mảng 1 chiều với linspace()
Giờ chúng ta đã hiểu rõ các đối số của linspace(), hãy xem một vài ví dụ thực tế!
Tạo mảng 1 chiều cách đều bằng linspace()
Ví dụ này tạo một mảng gồm 7 số cách đều giữa 0 và 10.
import numpy as np
# Create an array of 7 evenly spaced elements from 0 to 10
uniform_array = np.linspace(0,10, num=7)print("Uniform Array")
uniform_array
Được hỗ trợ bởi
Uniform Array
array([0.,1.66666667,3.33333333,5.,6.66666667,8.33333333,10.])Được hỗ trợ bởi
Loại trừ điểm cuối trong mảng 1 chiều cách đều bằng linspace()
Trong trường hợp này, chúng ta tạo một mảng gồm 8 số giữa 10 và 20, nhưng loại trừ giá trị cuối cùng (20) khỏi mảng, minh họa đối số endpoint trong thực tế.
import numpy as np
# Create an array of 8 elements from 10 to 20, excluding 20
exclude_final_array = np.linspace(10,20, num=8, endpoint=False)print("Array Excluding Final Value")
exclude_final_array
Được hỗ trợ bởi
Array Excluding Final Value
array([10.,11.25,12.5,13.75,15.,16.25,17.5,18.75])Được hỗ trợ bởi
Bao gồm kích thước bước trong mảng 1 chiều cách đều bằng linspace()
Ở đây, chúng ta tạo một mảng gồm 4 phần tử giữa -5 và 5. Đồng thời lấy và hiển thị kích thước bước.
import numpy as np
# Create an array of 4 elements from -5 to 5 and capture the step size
step_array, step = np.linspace(-5,5, num=4, retstep=True)print("Array with Defined Step Size", step_array)print("Step Size", step)Được hỗ trợ bởi
Array with Defined Step Size [-5.-1.666666671.666666675.]
Step Size 3.3333333333333335Được hỗ trợ bởi
Tạo mảng N chiều với linspace()
linspace() cũng hữu ích để tạo mảng đa chiều. Dưới đây là vài ví dụ minh họa.
Tạo mảng 2 chiều bằng linspace()
Ví dụ này minh họa cách tạo mảng 2D trong đó mỗi hàng chuyển tiếp mượt mà từ vector [0, 10] đến [5, 15], tạo hiệu ứng chuyển sắc qua 4 bước.
import numpy as np
# Perform column-wise linear interpolation from [10, 20] to [15, 25] over 3 steps
column_interpolation_array = np.linspace([10,20],[15,25], num=3, axis=1)print("Column-wise Interpolation Array:")print(column_interpolation_array)Được hỗ trợ bởi
Column-wise Interpolation Array:[[10.12.515.][20.22.525.]]Được hỗ trợ bởi
Các lựa chọn thay thế cho linspace() của NumPy
Mặc dù linspace() rất hữu ích, vẫn có các lựa chọn khác đáng cân nhắc, như hàm arange() của NumPy và list comprehension.
Sử dụng hàm arange() của NumPy
Hàm arange() tạo ra các giá trị trong một khoảng cho trước. Khác với linspace(), khoảng cách giữa các giá trị được chỉ định thay vì số lượng giá trị.
# Using arange to generate values from 0 to 10, spaced by 2
arange_example = np.arange(0,10,2)
arange_example
# Returns array([0, 2, 4, 6, 8])# Using linspace() to generate values from 0 to 10, with interval set to 2
linspace_example = np.linspace(0,10,2)
linspace_example
# Returns array([0.,10.0])Được hỗ trợ bởi
Sử dụng list comprehension
List comprehension cung cấp cách viết theo phong cách Pythonic để tạo danh sách, dù chúng thiếu lợi thế vector hóa và tính linh hoạt như NumPy linspace().
list_comp =[x for x inrange(10)]print(list_comp)# Outputs [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]Được hỗ trợ bởi
Tổng kết
Hàm linspace() của NumPy là công cụ nền tảng trong bộ công cụ khoa học dữ liệu, mang lại độ chính xác và linh hoạt khi tạo các dãy số. Nếu bạn muốn củng cố kỹ năng NumPy, hãy xem hướng dẫn về Mảng NumPy, Bảng ghi nhớ NumPy, hoặc cân nhắc đăng ký khóa học Nhập môn NumPy của chúng tôi.
Adel là một nhà giáo dục Khoa học Dữ liệu, diễn giả, và Phó Chủ tịch phụ trách Truyền thông tại DataCamp. Adel đã phát hành nhiều khóa học và buổi đào tạo trực tiếp về phân tích dữ liệu, học máy và kỹ thuật dữ liệu. Anh đam mê lan tỏa kỹ năng dữ liệu và hiểu biết dữ liệu trong toàn tổ chức, cũng như những điểm giao thoa giữa công nghệ và xã hội. Anh có bằng Thạc sĩ Khoa học Dữ liệu và Phân tích Kinh doanh. Thời gian rảnh, bạn có thể bắt gặp anh vui đùa cùng chú mèo Louis.
NumPy là một gói thiết yếu trong hệ sinh thái khoa học dữ liệu Python, cung cấp nhiều hàm để thao tác dữ liệu số một cách hiệu quả. Trong số đó, hàm
linspace()thường được dùng để tạo ra các giá trị cách đều trong một khoảng xác định, trở thành công cụ hữu ích cho các tác vụ cần dải giá trị số chính xác, như trực quan hóa dữ liệu và mô hình hóa toán học. Trong hướng dẫn này, tôi sẽ giới thiệu chi tiết cách dùng hàmlinspace().Câu trả lời ngắn: Cách dùng
np.linspace()Nếu bạn đang vội, đây là phần giải thích nhanh nhất về hàm
linspace(). Hàmlinspace()của NumPy tạo ra một mảng các số cách đều trong một khoảng xác định. Ở đây, chẳng hạn, chúng ta tạo một mảng bắt đầu từ0và kết thúc tại100, với khoảng gồm 5 số. Như bạn có thể dự đoán, nó trả về một mảng[0, 25, 75, 100].Vì sao dùng hàm
linspace()của NumPy?Hàm
linspace()là một phương pháp đơn giản và hiệu quả để tạo ra các giá trị phân bố tuyến tính, cung cấp giải pháp hữu ích cho nhiều bối cảnh cần dải giá trị số cụ thể, như trực quan hóa dữ liệu, mô phỏng, và thậm chí tinh chỉnh thuật toán. Dưới đây là một vài ví dụ về nơi có thể dùnglinspace():Cú pháp và cách dùng
linspace()của NumPy kèm ví dụNhư đã đề cập, hàm
linspace()tạo ra các giá trị phân bố tuyến tính, hữu ích cho nhiều phép tính số. Trước khi đi vào ví dụ, hãy xem các đối số khác nhau mà bạn có thể dùng vớilinspace().Các đối số của
linspace()trong NumPystart: Giá trị bắt đầu của dãy.stop: Giá trị kết thúc của dãy.num(tùy chọn): Số lượng mẫu trong khoảng. Mặc định là 50 và phải không âm.endpoint(tùy chọn): NếuTrue(mặc định),stoplà mẫu cuối cùng. NếuFalse, giá trị stop sẽ không được đưa vào dãy dolinspace()tạo ra. Điều này có nghĩa hàm sẽ tạo các mẫu cách đều trong khoảng từ start đến ngay trước stop, thực chất là loại trừ giá trị stop khỏi dãy. Điều này hữu ích khi bạn cần một dải giá trị tiến gần nhưng không chạm tới điểm cuối, cho phép kiểm soát linh hoạt hơn phạm vi giá trị tạo ra.retstep(tùy chọn): NếuTrue, trả về (samples,step), trong đósteplà khoảng cách giữa các mẫu.dtype(tùy chọn): Kiểu của mảng đầu ra. Nếu không chỉ định,dtypesẽ được suy từ các đối sốstartvàstop.axis(tùy chọn): Trục trong kết quả để lưu các mẫu, chỉ áp dụng khi làm việc với mảng đa chiều.Tạo mảng 1 chiều với
linspace()Giờ chúng ta đã hiểu rõ các đối số của
linspace(), hãy xem một vài ví dụ thực tế!Tạo mảng 1 chiều cách đều bằng
linspace()Ví dụ này tạo một mảng gồm 7 số cách đều giữa 0 và 10.
Loại trừ điểm cuối trong mảng 1 chiều cách đều bằng
linspace()Trong trường hợp này, chúng ta tạo một mảng gồm 8 số giữa 10 và 20, nhưng loại trừ giá trị cuối cùng (20) khỏi mảng, minh họa đối số
endpointtrong thực tế.Bao gồm kích thước bước trong mảng 1 chiều cách đều bằng
linspace()Ở đây, chúng ta tạo một mảng gồm 4 phần tử giữa -5 và 5. Đồng thời lấy và hiển thị kích thước bước.
Tạo mảng N chiều với
linspace()linspace()cũng hữu ích để tạo mảng đa chiều. Dưới đây là vài ví dụ minh họa.Tạo mảng 2 chiều bằng
linspace()Ví dụ này minh họa cách tạo mảng 2D trong đó mỗi hàng chuyển tiếp mượt mà từ vector
[0, 10]đến[5, 15], tạo hiệu ứng chuyển sắc qua 4 bước.Các lựa chọn thay thế cho
linspace()của NumPyMặc dù
linspace()rất hữu ích, vẫn có các lựa chọn khác đáng cân nhắc, như hàm arange() của NumPy và list comprehension.Sử dụng hàm
arange()của NumPyHàm
arange()tạo ra các giá trị trong một khoảng cho trước. Khác vớilinspace(), khoảng cách giữa các giá trị được chỉ định thay vì số lượng giá trị.Sử dụng list comprehension
List comprehension cung cấp cách viết theo phong cách Pythonic để tạo danh sách, dù chúng thiếu lợi thế vector hóa và tính linh hoạt như NumPy
linspace().Tổng kết
Hàm
linspace()của NumPy là công cụ nền tảng trong bộ công cụ khoa học dữ liệu, mang lại độ chính xác và linh hoạt khi tạo các dãy số. Nếu bạn muốn củng cố kỹ năng NumPy, hãy xem hướng dẫn về Mảng NumPy, Bảng ghi nhớ NumPy, hoặc cân nhắc đăng ký khóa học Nhập môn NumPy của chúng tôi.