Hướng dẫn how do you evenly space an array in python? - làm thế nào để bạn chia đều một mảng trong python?
Khi bạn làm việc với các ứng dụng số bằng Numpy, bạn thường cần tạo một loạt các số. Trong nhiều trường hợp, bạn muốn các con số được đặt cách đều nhau, nhưng cũng có những lúc bạn có thể cần các số không đều nhau. Một trong những công cụ chính bạn có thể sử dụng trong cả hai tình huống là 9. 9. Show
Ở dạng cơ bản của nó, 9 có vẻ tương đối đơn giản để sử dụng. Tuy nhiên, nó là một phần thiết yếu của bộ công cụ lập trình số. Nó có cả hai rất linh hoạt và mạnh mẽ. Trong hướng dẫn này, bạn sẽ tìm ra cách sử dụng chức năng này một cách hiệu quả.Trong hướng dẫn này, bạn sẽ học cách:
Hướng dẫn này giả định rằng bạn đã quen thuộc với những điều cơ bản của Numpy và loại dữ liệu 2. Bạn sẽ bắt đầu bằng cách tìm hiểu về nhiều cách khác nhau để tạo ra một loạt các con số trong Python. Sau đó, bạn sẽ xem xét kỹ hơn tất cả các cách sử dụng 9 và cách bạn có thể sử dụng nó một cách hiệu quả trong các chương trình của mình.Tạo phạm vi số lượng với khoảng cách thậm chíCó một số cách mà bạn có thể tạo ra một loạt các số cách đều nhau trong Python. 9 cho phép bạn thực hiện việc này và tùy chỉnh phạm vi để phù hợp với nhu cầu cụ thể của bạn, nhưng nó không phải là cách duy nhất để tạo ra một loạt các số. Trong phần tiếp theo, bạn sẽ học cách sử dụng 9 trước khi so sánh nó với các cách khác để tạo ra các phạm vi cách đều nhau.evenly spaced numbers in Python. 9 allows you
to do this and to customize the range to fit your specific needs, but it’s not the only way to create a range of numbers. In the next section, you’ll learn how to use 9 before comparing it with other ways of creating ranges of evenly spaced numbers.Sử dụng 1>>> import timeit 2>>> import numpy as np 3>>> numbers_array = np.linspace(-10, 10, 500) 4>>> step = 20 / 499 5>>> numbers_list = [-10 + step*interval for interval in range(500)] 6>>> def test_np(): 7... return (numbers_array + 2.5) ** 2 8... 9>>> def test_list(): 10... return [(number + 2.5) ** 2 for number in numbers_list] 11... 12>>> list(test_np()) == test_list() 13True 14>>> timeit.timeit("test_np()", globals=globals(), number=100000) 150.3116540400000076 16>>> timeit.timeit("test_list()", globals=globals(), number=100000) 175.478577034000011 9 9 có hai tham số bắt buộc, 8 và 9 mà bạn có thể sử dụng để đặt đầu và kết thúc phạm vi: 8 and
9, which you can use to set the beginning and end of the range:>>>
Mã này trả về một 2 với các khoảng cách đều nhau giữa các giá trị 8 và 9. Đây là một không gian vector, còn được gọi là không gian tuyến tính, đó là nơi tên 3 đến từ.vector space, also called a
linear space, which is where the name 3 comes from.Lưu ý rằng giá trị 4 được bao gồm trong mảng đầu ra. Hàm trả về một phạm vi đóng, một phạm vi bao gồm điểm cuối, theo mặc định. Điều này trái với những gì bạn có thể mong đợi từ Python, trong đó kết thúc của một phạm vi thường được bao gồm. Sự phá vỡ này với quy ước không phải là một sự giám sát. Sau này, bạn sẽ thấy rằng đây thường là những gì bạn muốn khi sử dụng chức năng này.closed range, one that includes the endpoint, by default. This is contrary to what you might expect from Python, in which the end of a range usually isn’t included. This break with convention isn’t an oversight. You’ll see later on that this is
usually what you want when using this function.Mảng trong ví dụ trên có độ dài 5, là số mặc định. Trong hầu hết các trường hợp, bạn sẽ muốn đặt số lượng giá trị của riêng mình trong mảng. Bạn có thể làm như vậy với tham số tùy chọn 6: 6:>>>
Mã này trả về một 2 với các khoảng cách đều nhau giữa các giá trị 8 và 9. Đây là một không gian vector, còn được gọi là không gian tuyến tính, đó là nơi tên 3 đến từ.>>>
Mã này trả về một 2 với các khoảng cách đều nhau giữa các giá trị 8 và 9. Đây là một không gian vector, còn được gọi là không gian tuyến tính, đó là nơi tên 3 đến từ.positional argument, without explicitly mentioning its name in the function call. This is the form you’re likely to use most often.Lưu ý rằng giá trị >>> np.arange(2.34, 31.97, 2) array([ 2.34, 4.34, 6.34, 8.34, 10.34, 12.34, 14.34, 16.34, 18.34, 20.34, 22.34, 24.34, 26.34, 28.34, 30.34]) 4 được bao gồm trong mảng đầu ra. Hàm trả về một phạm vi đóng, một phạm vi bao gồm điểm cuối, theo mặc định. Điều này trái với những gì bạn có thể mong đợi từ Python, trong đó kết thúc của một phạm vi thường được bao gồm. Sự phá vỡ này với quy ước không phải là một sự giám sát. Sau này, bạn sẽ thấy rằng đây thường là những gì bạn muốn khi sử dụng chức năng này.Mảng trong ví dụ trên có độ dài 5, là số mặc định. Trong hầu hết các trường hợp, bạn sẽ muốn đặt số lượng giá trị của riêng mình trong mảng. Bạn có thể làm như vậy với tham số tùy chọn 6:Mảng đầu ra trong trường hợp này chứa 4 các giá trị cách đều nhau giữa 8 và 4, đây chỉ là các số từ 8 đến 4. Ở đây, một ví dụ khác:>>>
Mã này trả về một 2 với các khoảng cách đều nhau giữa các giá trị 8 và 9. Đây là một không gian vector, còn được gọi là không gian tuyến tính, đó là nơi tên 3 đến từ.Lưu ý rằng giá trị 4 được bao gồm trong mảng đầu ra. Hàm trả về một phạm vi đóng, một phạm vi bao gồm điểm cuối, theo mặc định. Điều này trái với những gì bạn có thể mong đợi từ Python, trong đó kết thúc của một phạm vi thường được bao gồm. Sự phá vỡ này với quy ước không phải là một sự giám sát. Sau này, bạn sẽ thấy rằng đây thường là những gì bạn muốn khi sử dụng chức năng này.>>>
Mã này trả về một 2 với các khoảng cách đều nhau giữa các giá trị 8 và 9. Đây là một không gian vector, còn được gọi là không gian tuyến tính, đó là nơi tên 3 đến từ.Lưu ý rằng giá trị 4 được bao gồm trong mảng đầu ra. Hàm trả về một phạm vi đóng, một phạm vi bao gồm điểm cuối, theo mặc định. Điều này trái với những gì bạn có thể mong đợi từ Python, trong đó kết thúc của một phạm vi thường được bao gồm. Sự phá vỡ này với quy ước không phải là một sự giám sát. Sau này, bạn sẽ thấy rằng đây thường là những gì bạn muốn khi sử dụng chức năng này.Mảng trong ví dụ trên có độ dài 5, là số mặc định. Trong hầu hết các trường hợp, bạn sẽ muốn đặt số lượng giá trị của riêng mình trong mảng. Bạn có thể làm như vậy với tham số tùy chọn 6:execution speed. You can expand the section below to see how using a list performs in comparison to using a NumPy array.Bạn có thể so sánh phương thức bằng cách sử dụng Numpy với phương pháp bằng cách sử dụng toàn bộ danh sách bằng cách tạo các hàm thực hiện cùng một thao tác số học trên tất cả các phần tử trong cả hai chuỗi. Trong ví dụ dưới đây, bạn chia phạm vi từ 3 thành 4 thành các mẫu 00, giống như các khoảng 01:>>>
Các hàm 02 và 03 thực hiện các hoạt động tương tự trên các chuỗi. Bạn có thể xác nhận điều này bằng cách kiểm tra xem các đầu ra từ cả hai chức năng là như nhau, như được hiển thị trên dòng 12 trong đoạn mã ở trên. Sử dụng mô -đun 04 theo thời gian thực hiện cả hai phiên bản cho thấy rằng việc sử dụng danh sách có thể chậm hơn đáng kể so với sử dụng các mảng numpy.Sử dụng các công cụ Numpy thay vì Python lõi có thể mang lại hiệu quả tăng trong một số trường hợp. Trong các ứng dụng yêu cầu nhiều tính toán trên một lượng lớn dữ liệu, sự gia tăng hiệu quả này có thể là đáng kể. Sử dụng >>> np.linspace(1, 10, num=10) array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]) 05Numpy có phiên bản riêng của 6 tích hợp. Nó được gọi là 05, và không giống như 6, nó không bị giới hạn ở các số nguyên. Bạn có thể sử dụng 05 theo cách tương tự như 6, sử dụng 8, 9 và 13 làm tham số đầu vào:>>>
Các hàm 02 và 03 thực hiện các hoạt động tương tự trên các chuỗi. Bạn có thể xác nhận điều này bằng cách kiểm tra xem các đầu ra từ cả hai chức năng là như nhau, như được hiển thị trên dòng 12 trong đoạn mã ở trên. Sử dụng mô -đun 04 theo thời gian thực hiện cả hai phiên bản cho thấy rằng việc sử dụng danh sách có thể chậm hơn đáng kể so với sử dụng các mảng numpy.Sử dụng các công cụ Numpy thay vì Python lõi có thể mang lại hiệu quả tăng trong một số trường hợp. Trong các ứng dụng yêu cầu nhiều tính toán trên một lượng lớn dữ liệu, sự gia tăng hiệu quả này có thể là đáng kể.half-open interval, which excludes the endpoint of the range. This behavior is similar to 6 but different from 9. These differences can be a bit confusing initially, but you’ll get used to them as you start using these functions more often.Sử dụng 05>>>
Các hàm 02 và 03 thực hiện các hoạt động tương tự trên các chuỗi. Bạn có thể xác nhận điều này bằng cách kiểm tra xem các đầu ra từ cả hai chức năng là như nhau, như được hiển thị trên dòng 12 trong đoạn mã ở trên. Sử dụng mô -đun 04 theo thời gian thực hiện cả hai phiên bản cho thấy rằng việc sử dụng danh sách có thể chậm hơn đáng kể so với sử dụng các mảng numpy.Sử dụng các công cụ Numpy thay vì Python lõi có thể mang lại hiệu quả tăng trong một số trường hợp. Trong các ứng dụng yêu cầu nhiều tính toán trên một lượng lớn dữ liệu, sự gia tăng hiệu quả này có thể là đáng kể. >>>
Sử dụng 05
Các giá trị đầu ra là như nhau, mặc dù 6 trả về một đối tượng phạm vi, có thể được chuyển đổi thành danh sách để hiển thị tất cả các giá trị, trong khi 05 trả về một mảng.
Đầu ra là một mảng bắt đầu từ giá trị 8, với khoảng cách giữa mỗi số chính xác bằng kích thước 13 được sử dụng trong các đối số đầu vào. Số cuối cùng là số lớn nhất trong loạt bài này nhỏ hơn số được sử dụng cho 22 của phạm vi.Đối số >>> np.linspace(1, 10, num=10) array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]) 13 cũng có thể là một số điểm nổi, mặc dù bạn sẽ cần phải thận trọng trong trường hợp này vì đầu ra có thể không phải lúc nào cũng hoàn toàn là những gì bạn dự định:Trong ví dụ đầu tiên, mọi thứ có vẻ tốt. Tuy nhiên, bạn có thể nhận thấy rằng trong ví dụ thứ hai, khi 13 là 0,345, giá trị cuối cùng trong đầu ra bằng với giá trị 9 mặc dù 05 sử dụng khoảng nửa mở. Tài liệu cho 05 có cảnh báo về điều này:Khi sử dụng bước không định cư, chẳng hạn như 0,1, kết quả thường sẽ không nhất quán. Tốt hơn là sử dụng 28 cho những trường hợp này. (Nguồn)Ở đây, một quy tắc tốt để quyết định sử dụng chức năng nào trong hai chức năng:Sử dụng 9 khi các giá trị chính xác cho các điểm 8 và 22 trong phạm vi của bạn là các thuộc tính quan trọng trong ứng dụng của bạn.Sử dụng 05 khi kích thước 13 giữa các giá trị quan trọng hơn.sampling, or resolution, of the array you’re creating. Have a look at a few more examples:>>>
Bạn sẽ sử dụng 05 một lần nữa trong hướng dẫn này. Để tìm hiểu thêm về nó, hãy xem Numpy Arange (): Cách sử dụng np.arange ().>>> 0Tùy chỉnh đầu ra từ 9Sử dụng 9 với các tham số 8, 9 và 6 là cách sử dụng chức năng phổ biến nhất và đối với nhiều ứng dụng, bạn đã giành được cách nhìn vượt ra ngoài phương pháp này. Tuy nhiên, bạn có thể tùy chỉnh đầu ra của bạn hơn nữa.>>> 1Trong phần này, bạn sẽ học cách tùy chỉnh phạm vi mà LỚN đã tạo, xác định các loại dữ liệu của các mục trong mảng và kiểm soát hành vi của điểm cuối.
Thông thường, bạn sẽ sử dụng chức năng này chỉ với ba tham số đầu vào này. Tuy nhiên, như bạn sẽ thấy trong các phần tiếp theo, bạn có thể sửa đổi đầu ra hơn nữa. Tham số >>> np.linspace(1, 10, num=10) array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]) 57 để thay đổi loại đầu raCác yếu tố của một mảng numpy đều thuộc về cùng một loại dữ liệu. 9 thường trả về các mảng phao. Bạn có thể thấy điều này cả bằng cách kiểm tra đầu ra hoặc, tốt hơn nữa, bằng cách xem thuộc tính 59 cho mảng:>>> 2Các số trong mảng là phao. Điều này đúng ngay cả trong các trường hợp như sau: >>> 3Các số trong mảng là phao. Điều này đúng ngay cả trong các trường hợp như sau: Mặc dù tất cả các yếu tố là toàn bộ số, nhưng chúng vẫn được hiển thị với một khoảng thời gian kéo dài để cho thấy rằng chúng nổi. Bạn xác nhận rằng bằng cách xem xét giá trị của 60.>>> 4Các số trong mảng là phao. Điều này đúng ngay cả trong các trường hợp như sau: >>> 5Các số trong mảng là phao. Điều này đúng ngay cả trong các trường hợp như sau: 6Mặc dù tất cả các yếu tố là toàn bộ số, nhưng chúng vẫn được hiển thị với một khoảng thời gian kéo dài để cho thấy rằng chúng nổi. Bạn xác nhận rằng bằng cách xem xét giá trị của 60.Bạn có thể sử dụng tham số đầu vào 57 tùy chọn để thay đổi loại dữ liệu của các phần tử trong mảng đầu ra:>>> 7Các số trong mảng là phao. Điều này đúng ngay cả trong các trường hợp như sau: Mặc dù tất cả các yếu tố là toàn bộ số, nhưng chúng vẫn được hiển thị với một khoảng thời gian kéo dài để cho thấy rằng chúng nổi. Bạn xác nhận rằng bằng cách xem xét giá trị của >>> np.linspace(1, 10, num=10) array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]) 60.Bạn có thể sử dụng tham số đầu vào 57 tùy chọn để thay đổi loại dữ liệu của các phần tử trong mảng đầu ra:>>> 8Các số trong mảng là phao. Điều này đúng ngay cả trong các trường hợp như sau: Mặc dù tất cả các yếu tố là toàn bộ số, nhưng chúng vẫn được hiển thị với một khoảng thời gian kéo dài để cho thấy rằng chúng nổi. Bạn xác nhận rằng bằng cách xem xét giá trị của 60.>>> 9Các số trong mảng là phao. Điều này đúng ngay cả trong các trường hợp như sau: Mặc dù tất cả các yếu tố là toàn bộ số, nhưng chúng vẫn được hiển thị với một khoảng thời gian kéo dài để cho thấy rằng chúng nổi. Bạn xác nhận rằng bằng cách xem xét giá trị của >>> np.linspace(1, 10, num=10) array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]) 60.Bạn có thể sử dụng tham số đầu vào 57 tùy chọn để thay đổi loại dữ liệu của các phần tử trong mảng đầu ra:higher-dimensional array:>>> 0Các số trong mảng là phao. Điều này đúng ngay cả trong các trường hợp như sau: Mặc dù tất cả các yếu tố là toàn bộ số, nhưng chúng vẫn được hiển thị với một khoảng thời gian kéo dài để cho thấy rằng chúng nổi. Bạn xác nhận rằng bằng cách xem xét giá trị của 60.>>> 1Các số trong mảng là phao. Điều này đúng ngay cả trong các trường hợp như sau: Mặc dù tất cả các yếu tố là toàn bộ số, nhưng chúng vẫn được hiển thị với một khoảng thời gian kéo dài để cho thấy rằng chúng nổi. Bạn xác nhận rằng bằng cách xem xét giá trị của 60.>>> 2Các số trong mảng là phao. Điều này đúng ngay cả trong các trường hợp như sau: Mặc dù tất cả các yếu tố là toàn bộ số, nhưng chúng vẫn được hiển thị với một khoảng thời gian kéo dài để cho thấy rằng chúng nổi. Bạn xác nhận rằng bằng cách xem xét giá trị của >>> np.linspace(1, 10, num=10) array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]) 60.Bạn có thể sử dụng tham số đầu vào 57 tùy chọn để thay đổi loại dữ liệu của các phần tử trong mảng đầu ra: 3Mặc dù đối số nêu rõ 62, Numpy diễn giải đây là một 63, đây là loại dữ liệu trong Numpy. Bạn có thể xác nhận điều này bằng cách kiểm tra loại một trong các yếu tố của 64:
87
Một mảng loại 2 chứa không gian vectơKích thước bước là >>> np.linspace(1, 10, num=10) array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]) 94, nếu >>> np.linspace(1, 10, num=10) array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]) 68 được đặt thành >>> np.linspace(1, 10, num=10) array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]) 75Bạn có thể sử dụng phần này làm tài liệu tham khảo khi bạn bắt đầu thử nghiệm với 9 và các cách khác nhau mà bạn có thể tùy chỉnh đầu ra của nó.Ví dụ: Một băng chuyền sản xuất thực phẩm 4Hãy tưởng tượng rằng một công ty sản xuất các mặt hàng thực phẩm đóng gói có hệ thống băng chuyền trong nhà máy sản xuất thực phẩm. Vị trí dọc theo băng chuyền được tham chiếu bởi một số đại diện cho chiều dài của đường dẫn băng tải từ điểm bắt đầu. Có 27 cảm biến nhiệt độ đã được lắp đặt trong khoảng thời gian bằng nhau dọc theo một đoạn quan trọng của vành đai. Cảm biến đầu tiên được đặt tại vị trí 17.5 dọc theo vành đai và vị trí cuối cùng ở 46.2. Các mảng cảm biến nhiệt độ đầu ra dữ liệu có thể được đọc dưới dạng danh sách trong Python. Dưới đây, một ví dụ về việc đọc nhiệt độ tính bằng độ C. 5Người quản lý nhà máy cần phải nhìn thấy những nhiệt độ này được vẽ theo vị trí của họ trên băng chuyền để đảm bảo nhiệt độ vẫn ở trong mỗi điểm trên đoạn đường sắt quan trọng này. Bạn cần phải nhập 13 để vẽ nhiệt độ:Bạn vẽ các giá trị trong danh sách 14 và đặt nhãn tiêu đề và trục. Điều này đưa ra cốt truyện sau:
Cái đầu tiên là ở vị trí 17.5. Cái cuối cùng là ở vị trí 46.2. 6Đây là một kịch bản lý tưởng để sử dụng 9:>>> Không gian tuyến tính 16 cho thấy vị trí chính xác của tất cả các cảm biến nhiệt độ dọc theo băng chuyền. Bây giờ bạn có thể vẽ đồ thị nhiệt độ so với mảng 16: 7Sự khác biệt so với ví dụ trước trong mã trên là bạn sử dụng mảng >>> np.linspace(-10, 10, 25) array([-10. , -9.16666667, -8.33333333, -7.5 , -6.66666667, -5.83333333, -5. , -4.16666667, -3.33333333, -2.5 , -1.66666667, -0.83333333, 0. , 0.83333333, 1.66666667, 2.5 , 3.33333333, 4.16666667, 5. , 5.83333333, 6.66666667, 7.5 , 8.33333333, 9.16666667, 10. ]) 16 làm đối số đầu tiên trong >>> np.linspace(-10, 10, 25) array([-10. , -9.16666667, -8.33333333, -7.5 , -6.66666667, -5.83333333, -5. , -4.16666667, -3.33333333, -2.5 , -1.66666667, -0.83333333, 0. , 0.83333333, 1.66666667, 2.5 , 3.33333333, 4.16666667, 5. , 5.83333333, 6.66666667, 7.5 , 8.33333333, 9.16666667, 10. ]) 19. Điều này đưa ra cốt truyện sau:Biểu đồ bây giờ hiển thị trục x chính xác, đại diện cho các vị trí mà mỗi nhiệt độ được đo. Ví dụ này cho thấy một trường hợp điển hình mà 9 là giải pháp lý tưởng.discrete representation. One of the key tools you’ll need in this process is the ability to create a linear space.Đại diện cho các chức năng toán họcNhiều lĩnh vực khoa học, kỹ thuật, tài chính và các lĩnh vực khác dựa vào các chức năng toán học. Đây thường là các chức năng của các biến liên tục. Nếu bạn muốn nghiên cứu các quy trình này một cách tính toán, thì bạn sẽ cần phải ước tính các chức năng toán học này với một biểu diễn riêng biệt. Một trong những công cụ chính mà bạn sẽ cần trong quá trình này là khả năng tạo không gian tuyến tính. Chức năng toán học với 9 8Trong phần này, bạn sẽ học cách biểu diễn một chức năng toán học trong Python và vẽ nó. Xem xét chức năng sau: Hàm toán học này là một ánh xạ từ dòng số thực liên tục. Ngay cả khi các giới hạn được đặt, giả sử cho -5 x ≤ 5, vẫn còn một số giá trị vô hạn của x. Để thể hiện chức năng ở trên, trước tiên bạn cần tạo một phiên bản riêng biệt của dòng số thực: 9Trong hướng dẫn này, ký hiệu X được sử dụng để biểu diễn biến toán học liên tục được xác định trên dòng số thực và 22 được sử dụng để thể hiện xấp xỉ tính toán, riêng biệt của nó. Phiên bản có dấu gạch dưới cũng được sử dụng cho biến Python đại diện cho mảng. 0Vì 22 là một mảng numpy, bạn có thể tính toán các thao tác đại số tương tự như cách bạn sẽ toán học và không cần các vòng lặp:Mảng mới, 24, là phiên bản riêng biệt của biến liên tục 25. Bước cuối cùng là trực quan hóa nó:undersampled. Doubling the resolution may work better: 1Điều này đưa ra cốt truyện sau: Điều đó tốt hơn, và bạn có thể tự tin hơn rằng đó là một đại diện công bằng của chức năng. Tuy nhiên, cốt truyện vẫn không mượt mà như bạn có thể thấy trong một cuốn sách giáo khoa toán học. Với việc lấy mẫu thậm chí cao hơn, cốt truyện trở nên mượt mà hơn: 2Điều này đưa ra cốt truyện sau: Bạn có thể chọn một mẫu thậm chí cao hơn, nhưng điều đó sẽ phải trả giá. Các mảng lớn hơn đòi hỏi nhiều bộ nhớ hơn và các tính toán sẽ đòi hỏi nhiều thời gian hơn. Ví dụ: Sóng du lịch chồng lênTrong phần này, bạn sẽ tạo ra hai sóng khác nhau với các thuộc tính riêng biệt, sau đó bạn sẽ siêu kích hoạt chúng và tạo một hình ảnh động để cho thấy cách chúng đi du lịch. Một sóng có thể được biểu diễn bằng toán học bằng hàm sau: Hướng dẫn này không phải là về vật lý của sóng, vì vậy tôi sẽ giữ vật lý rất ngắn gọn! Một sóng theo hàm hình sin được xác định bởi năm thuật ngữ sau:sinusoidal function that is defined by the following five terms:
Bạn sẽ học cách đối phó với các chức năng hai chiều trong phần tiếp theo, nhưng trong ví dụ này, bạn sẽ có một cách tiếp cận khác. Bạn có thể bắt đầu bằng cách tạo một không gian tuyến tính để biểu diễn X: 3Khi các hằng số được xác định, bạn có thể tạo sóng. Bạn có thể bắt đầu bằng cách xác định các hằng số: 4Hàm bao gồm thời gian (t), nhưng ban đầu bạn sẽ tập trung vào biến x. Đặt 29 Bây giờ có nghĩa là bạn vẫn có thể viết toàn bộ phương trình trong mã của mình mặc dù bạn chưa sử dụng thời gian. Bây giờ bạn có thể tạo mảng để biểu diễn sóng: 5Mảng được tạo là phiên bản riêng biệt của phương trình mô tả sóng. Bây giờ bạn có thể vẽ đồ thị 30: 6Biểu đồ của 30 được hiển thị dưới đây:Điều đó trông giống như một làn sóng hình sin, nhưng bạn đã thấy vấn đề này trước đó. Độ phân giải của không gian tuyến tính được sử dụng cho 22 là đủ. Bạn có thể khắc phục điều này bằng cách tăng lấy mẫu: 7Biểu đồ này của 30 hiện cho thấy một làn sóng mượt mà:Bây giờ bạn đã sẵn sàng để siêu nhiều sóng. Tất cả những gì bạn cần làm là tạo hai sóng khác nhau và thêm chúng lên. Đây cũng là thời điểm tốt để tái cấu trúc mã để dọn dẹp nó một chút: 8Mã này tạo ra hai sóng khác nhau và thêm chúng lại với nhau, hiển thị sự chồng chất của sóng: Bạn có thể thấy cả hai sóng được vẽ riêng biệt trong hình trên cùng. Hình dưới cùng cho thấy sự chồng chất của sóng, khi chúng được thêm vào với nhau. Nhiệm vụ cuối cùng của bạn bây giờ là thiết lập các sóng này theo chuyển động bằng cách vẽ các sóng chồng lên nhau cho các giá trị khác nhau của thời gian t: 9Điều này cho đầu ra sau:
Bạn có thể thử mã ở trên với các sóng của các tham số khác nhau và thậm chí bạn có thể thêm sóng thứ ba hoặc thứ tư. Bây giờ bạn có thể chọn các chức năng yêu thích của riêng bạn để thử nghiệm và cố gắng đại diện cho chúng trong Python. Chức năng toán học hai chiềuTrong ví dụ trước, bạn đã giải quyết vấn đề có hàm với hai biến bằng cách biểu diễn một biến là tọa độ không gian và một như một tọa độ thời gian. Điều này có ý nghĩa khi hai tọa độ thực sự là một không gian và một thời gian. Phương pháp này đã giành chiến thắng luôn luôn làm việc. Ở đây, một chức năng với hai biến: Đây là hàm Gaussian đơn giản hóa theo hai chiều, với tất cả các tham số có giá trị đơn vị. Để thể hiện điều này, bạn sẽ cần tạo hai không gian tuyến tính, một cho X và một cho y. Trong trường hợp này, chúng có thể giống hệt nhau, nhưng điều đó không cần phải như vậy: 0Các vectơ này là mỗi chiều một chiều, nhưng mảng cần thiết phải là hai chiều vì nó cần thể hiện hàm của hai biến. Numpy có một chức năng hữu ích gọi là 34 mà bạn có thể sử dụng kết hợp với 9 để chuyển đổi các vectơ một chiều thành ma trận hai chiều. Các ma trận này đại diện cho các tọa độ theo hai chiều:>>> 1Bạn đã biến các vectơ thành các mảng hai chiều. Bây giờ bạn có thể sử dụng các mảng này để tạo hàm hai chiều: 2Bạn có thể hiển thị ma trận này trong hai hoặc ba chiều bằng cách sử dụng 13: 3Các biểu diễn hai chiều và ba chiều được hiển thị bên dưới: Bạn có thể sử dụng phương pháp này cho bất kỳ chức năng của hai biến. Nếu bạn muốn tạo mặt nạ hình đĩa nhị phân, thì bạn có thể biểu diễn chức năng này bằng các toán tử so sánh: 4Trên dòng 10, bạn tạo ra mảng 37 bằng cách sử dụng so sánh phần tử khôn ngoan. Điều này đưa ra cốt truyện sau:Mảng 37 có giá trị 75 (hoặc 8) cho tất cả các giá trị của 22 và 24 nằm trong phương trình của vòng tròn. Mặt khác, nó có giá trị 73 (hoặc 9).Bây giờ bạn được trang bị các công cụ để thể hiện các hàm toán học theo một chiều và hai chiều tính toán, sử dụng 9 để tạo các không gian tuyến tính cần thiết để biểu diễn các biến hàm. Bạn cũng có thể mở rộng khái niệm tương tự đến kích thước cao hơn.Tạo phạm vi số với khoảng cách không đồng đềuBạn đã thấy cách tạo và sử dụng một loạt các số cách đều nhau. Tuy nhiên, có những lúc bạn có thể cần một mảng không có khoảng cách tuyến tính. Các bước giữa mỗi giá trị có thể cần phải là logarit hoặc tuân theo một số mẫu khác. Trong phần cuối cùng này, bạn sẽ tìm ra các tùy chọn của bạn là gì để tạo loại mảng này. Không gian logaritHàm 46 tạo ra một không gian logarit trong đó các số được tạo đều cách đều nhau trên thang nhật ký.Khi bạn đã thành thạo 9, bạn sẽ được trang bị tốt để sử dụng 46 vì các tham số đầu vào và đầu ra trả về của hai hàm là rất giống nhau. Một tham số mà Lừa bị thiếu trong 46 là 68 vì có một giá trị duy nhất để thể hiện bước thay đổi bước giữa các số liên tiếp. 46 có tham số đầu vào bổ sung, 52, với giá trị mặc định là 4. Một điểm khác biệt quan trọng khác là 8 và 9 đại diện cho điểm bắt đầu và điểm cuối logarit. Giá trị đầu tiên trong mảng là 522____68 và giá trị cuối cùng là 52 9:>>> 5Điều này tạo ra một không gian logarit với các yếu tố 28 từ 4 9 đến 4 64 hoặc từ 8 đến 66. Mảng đầu ra cho thấy các số 8, 4, 82, 70 và 66 trong ký hiệu khoa học. Mặc dù Base 10 là giá trị mặc định, bạn có thể tạo các không gian logarit với bất kỳ cơ sở nào:>>> 6Điều này tạo ra một không gian logarit với các yếu tố 28 từ 4 9 đến 4 64 hoặc từ 8 đến 66. Mảng đầu ra cho thấy các số 8, 4, 82, 70 và 66 trong ký hiệu khoa học. Mặc dù Base 10 là giá trị mặc định, bạn có thể tạo các không gian logarit với bất kỳ cơ sở nào:Ví dụ này cho thấy một không gian logarit trong cơ sở e. Trong phần tiếp theo, bạn sẽ thấy cách tạo các phạm vi phi tuyến khác mà aren logarit.Các phạm vi phi tuyến kháctransforming a linear space. Bây giờ bạn có thể tạo không gian tuyến tính và logarit. Bạn cũng có thể cần một loạt các số theo các khoảng phi tuyến khác. Bạn có thể đạt được điều này bằng cách chuyển đổi một không gian tuyến tính. >>> 7Điều này tạo ra một không gian logarit với các yếu tố 28 từ 4 9 đến 4 64 hoặc từ 8 đến 66. Mảng đầu ra cho thấy các số 8, 4, 82, 70 và 66 trong ký hiệu khoa học. Mặc dù Base 10 là giá trị mặc định, bạn có thể tạo các không gian logarit với bất kỳ cơ sở nào:>>> 8Điều này tạo ra một không gian logarit với các yếu tố 28 từ 4 9 đến 4 64 hoặc từ 8 đến 66. Mảng đầu ra cho thấy các số 8, 4, 82, 70 và 66 trong ký hiệu khoa học. Mặc dù Base 10 là giá trị mặc định, bạn có thể tạo các không gian logarit với bất kỳ cơ sở nào:Ví dụ này cho thấy một không gian logarit trong cơ sở e. Trong phần tiếp theo, bạn sẽ thấy cách tạo các phạm vi phi tuyến khác mà aren logarit.Các phạm vi phi tuyến khác Bây giờ bạn có thể tạo không gian tuyến tính và logarit. Bạn cũng có thể cần một loạt các số theo các khoảng phi tuyến khác. Bạn có thể đạt được điều này bằng cách chuyển đổi một không gian tuyến tính. Bắt đầu bằng cách tạo một không gian tuyến tính: Bây giờ bạn có thể chuyển đổi điều này thành một loạt các số tuyến tính trên x2: Điều này có vẻ quen thuộc. Nó cùng một phương pháp bạn đã sử dụng để đại diện cho các chức năng toán học trước đó trong hướng dẫn này. Thật vậy, nó chính xác giống nhau. Lý do bạn đôi khi có thể muốn nghĩ về điều này vì việc tạo ra một mảng cách đều nhau sẽ trở nên rõ ràng hơn trong phần tiếp theo, khi bạn nhìn vào một ví dụ cụ thể. 9Ví dụ: Mô phỏng hành tinh quay quanh 0Trong phần này, bạn sẽ tạo ra một mô phỏng của một hành tinh quay quanh mặt trời của nó. Để đơn giản hóa một chút mô phỏng, bạn có thể giả sử quỹ đạo hành tinh là hình tròn chứ không phải là hình elip. 1Phương trình mô tả một vòng tròn là một hàm của x và y và phụ thuộc vào bán kính r: Vì vậy, nếu các vị trí X của hành tinh được đặt, các vị trí y tương ứng sẽ được đưa ra bằng cách sắp xếp lại phương trình trên: Do đó, hành tinh có thể được đặt ở một tập hợp các tọa độ (x, y) và miễn là y được cho bởi phương trình trên, hành tinh sẽ vẫn còn trên quỹ đạo. Vị trí của nó sẽ nằm trên chu vi của một vòng tròn. Bây giờ bạn rất thành thạo với 9, vì vậy nỗ lực đầu tiên có thể sử dụng các phương pháp bạn đã biết: 2Biến X kéo dài đường kính của vòng tròn dọc theo ngang, từ trái sang phải, có nghĩa là từ -r đến +r. Bây giờ bạn có thể làm việc y: >>> 3Các giá trị trong 22 đi từ 85 đến 9 đến 5 và sau đó trở lại thông qua 9 đến 85. Bạn cũng có thể in 24 để xác nhận rằng nó tương ứng với các giá trị dương của y cho nửa đầu và các giá trị âm của y cho nửa thứ hai. Một biểu đồ phân tán của 22 và 24 sẽ xác nhận rằng hành tinh này hiện đang ở trong một quỹ đạo mà một vòng tròn đầy đủ: 4Điều này đưa ra cốt truyện sau: Bạn đã có thể phát hiện ra vấn đề trong âm mưu phân tán này, nhưng bạn sẽ quay lại với nó một chút sau đó. Hiện tại, bạn có thể sử dụng các vectơ 22 và 24 ở trên để tạo mô phỏng hành tinh di chuyển.Bạn cần phải nhập 95 cho việc này: 5Điều này cho đầu ra sau: Thật không may, các hành tinh don quỹ đạo theo cách này. Bạn có thể thấy hành tinh tăng tốc như thế nào khi nó băng qua trục X ở bên trái và bên phải của quỹ đạo và chậm lại khi nó băng qua trục y ở phía trên và dưới cùng. Hãy nhìn vào các sơ đồ phân tán cho thấy tất cả các vị trí hành tinh xung quanh quỹ đạo để xem tại sao điều này xảy ra. Các điểm gần nhau hơn ở phía trên và dưới cùng của quỹ đạo nhưng cách nhau ở bên trái và bên phải. Bạn cần các điểm cách đều nhau trên chu vi của quỹ đạo, nhưng những gì bạn có là điểm dựa trên một vectơ 22 đều nhau.Để khắc phục điều này, bạn cần tạo một mảng các giá trị 22 không tuyến tính nhưng tạo ra các điểm tuyến tính dọc theo chu vi của quỹ đạo. Như một điểm di chuyển trơn tru xung quanh một quỹ đạo tròn, hình chiếu của nó trên các di chuyển trục x (đồng), do đó bạn có thể khắc phục điều này bằng cách thay đổi 22 để nó tuyến tính trên 99: 6Dòng đầu tiên biến một không gian tuyến tính thành một không gian phi tuyến. Các khoảng giữa mỗi giá trị của 22 aren bằng nhau nhưng thay đổi tùy theo hàm cosin. Điều này đưa ra cốt truyện sau:Các điểm bây giờ được đặt cách đều nhau trên chu vi của quỹ đạo tròn. Bước cuối cùng của bạn là tạo lại hình ảnh động bằng cách sử dụng cùng một mã như trước đó. Đây cũng là thời điểm tốt để tăng độ phân giải bằng cách tăng giá trị của biến 01 mà bạn đã xác định khi bắt đầu: 7Điều này cho đầu ra sau: Thật không may, các hành tinh don quỹ đạo theo cách này. Bạn có thể thấy hành tinh tăng tốc như thế nào khi nó băng qua trục X ở bên trái và bên phải của quỹ đạo và chậm lại khi nó băng qua trục y ở phía trên và dưới cùng. Hãy nhìn vào các sơ đồ phân tán cho thấy tất cả các vị trí hành tinh xung quanh quỹ đạo để xem tại sao điều này xảy ra. Các điểm gần nhau hơn ở phía trên và dưới cùng của quỹ đạo nhưng cách nhau ở bên trái và bên phải. Bạn cần các điểm cách đều nhau trên chu vi của quỹ đạo, nhưng những gì bạn có là điểm dựa trên một vectơ 22 đều nhau. 8Để khắc phục điều này, bạn cần tạo một mảng các giá trị 22 không tuyến tính nhưng tạo ra các điểm tuyến tính dọc theo chu vi của quỹ đạo. Như một điểm di chuyển trơn tru xung quanh một quỹ đạo tròn, hình chiếu của nó trên các di chuyển trục x (đồng), do đó bạn có thể khắc phục điều này bằng cách thay đổi 22 để nó tuyến tính trên 99:Dòng đầu tiên biến một không gian tuyến tính thành một không gian phi tuyến. Các khoảng giữa mỗi giá trị của >>> np.linspace(-10, 10, 25) array([-10. , -9.16666667, -8.33333333, -7.5 , -6.66666667, -5.83333333, -5. , -4.16666667, -3.33333333, -2.5 , -1.66666667, -0.83333333, 0. , 0.83333333, 1.66666667, 2.5 , 3.33333333, 4.16666667, 5. , 5.83333333, 6.66666667, 7.5 , 8.33333333, 9.16666667, 10. ]) 22 aren bằng nhau nhưng thay đổi tùy theo hàm cosin. Điều này đưa ra cốt truyện sau:Các điểm bây giờ được đặt cách đều nhau trên chu vi của quỹ đạo tròn. Bước cuối cùng của bạn là tạo lại hình ảnh động bằng cách sử dụng cùng một mã như trước đó. Đây cũng là thời điểm tốt để tăng độ phân giải bằng cách tăng giá trị của biến 01 mà bạn đã xác định khi bắt đầu:Để xem phiên bản đầy đủ của mã tạo hoạt hình này, bạn có thể mở rộng phần bên dưới. Phiên bản đầy đủ, cuối cùng của mô phỏng, bao gồm lưu mô phỏng vào
Tạo một phạm vi số đồng đều hoặc không đồng đều Hàm Numpy được sử dụng để tạo ra các mảng cách đều nhau là gì?Không gian linsp không gian tạo ra các chuỗi các giá trị cách đều nhau trong một khoảng thời gian.Hàm không gian linsp không gian tạo ra các chuỗi các giá trị cách đều nhau trong một khoảng thời gian xác định. creates sequences of evenly spaced values within an interval. The NumPy linspace function creates sequences of evenly spaced values within a defined interval.
Bạn có thể thay đổi kích thước mảng trong Python không?Với sự trợ giúp của numpy numpy.resize (), chúng ta có thể thay đổi kích thước của một mảng.Mảng có thể có bất kỳ hình dạng nào nhưng để thay đổi kích thước nó, chúng ta chỉ cần kích thước tức là (2, 2), (2, 3) và nhiều hơn nữa. resize(), we can resize the size of an array. Array can be of any shape but to resize it we just need the size i.e (2, 2), (2, 3) and many more.
Linspace hoạt động như thế nào?Hàm Linspace () trả về các số cách đều nhau trong một khoảng thời gian được chỉ định [START, STOP].Điểm cuối của khoảng thời gian có thể được loại trừ tùy ý.Giá trị bắt đầu của chuỗi.Giá trị cuối của chuỗi, trừ khi điểm cuối được đặt thành sai.returns evenly spaced numbers over a specified interval [start, stop]. The endpoint of the interval can optionally be excluded. The starting value of the sequence. The end value of the sequence, unless endpoint is set to False.
Bạn có thể chia một mảng trong Python không?Python's numpy.divide () tính toán sự phân chia phần tử của các phần tử mảng.Các phần tử trong mảng thứ nhất được chia cho các phần tử trong mảng thứ hai. divide() computes the element-wise division of array elements. The elements in the first array are divided by the elements in the second array. |