Nhận toàn quyền truy cập vào Thao tác dữ liệu trong Python - Master Python, NumPy và Pandas và hơn 60 nghìn tựa game khác, với bản dùng thử miễn phí 10 ngày của O'Reilly
Ngoài ra còn có các sự kiện trực tuyến trực tiếp, nội dung tương tác, tài liệu chuẩn bị chứng nhận, v.v.
Mô-đun con thực hiện đại số tuyến tính cơ bản, chẳng hạn như giải các hệ tuyến tính, phân tách giá trị số ít, v.v. Tuy nhiên, nó không đảm bảo được biên dịch bằng cách sử dụng các quy trình hiệu quả và do đó chúng tôi khuyên bạn nên sử dụng , như được trình bày chi tiết trong phần
Thực hiện các thao tác khác
- Nhìn vào sự giúp đỡ cho
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]2. Khi nào điều này có thể hữu ích?- Nhìn vào sự giúp đỡ cho
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]3 và>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]4
Tính tổng
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]2
Tính tổng theo hàng và theo cột
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]3
Mẹo
Ý tưởng tương tự ở kích thước cao hơn
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]4
giảm khác
— hoạt động theo cùng một cách [và lấy
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]5]
Cực đoan
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]5
Các phép toán logic
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]6
Ghi chú
Có thể được sử dụng để so sánh mảng
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]7
Số liệu thống kê
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]8
… và nhiều hơn nữa [tốt nhất để tìm hiểu khi bạn đi]
Tập thể dục. giảm
- Cho rằng có một
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]6, bạn có thể muốn xem chức năng nào khác?- Sự khác biệt giữa
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]6 và>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]8 là gì?
Ví dụ đã làm việc. khuếch tán sử dụng thuật toán đi bộ ngẫu nhiên
Mẹo
Chúng ta hãy xem xét một quá trình đi bộ ngẫu nhiên 1D đơn giản. tại mỗi thời điểm, người đi bộ nhảy sang phải hoặc trái với xác suất bằng nhau
Chúng tôi quan tâm đến việc tìm khoảng cách điển hình từ điểm gốc của một người đi bộ ngẫu nhiên sau khi nhảy sang trái hoặc phải
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]9? . chúng ta sẽ tạo một mảng 2D với các “câu chuyện” [mỗi người đi bộ có một câu chuyện] theo một hướng và thời gian theo hướng khác
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]9
Chúng tôi chọn ngẫu nhiên tất cả các bước 1 hoặc -1 của bước đi
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]60
Chúng tôi xây dựng các bước đi bằng cách tổng hợp các bước theo thời gian
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]61
Chúng tôi có ý nghĩa trong trục của những câu chuyện
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]62
Vẽ đồ thị kết quả
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]63
Chúng tôi tìm thấy một kết quả nổi tiếng trong vật lý. khoảng cách RMS tăng theo căn bậc hai của thời gian
Các thao tác cơ bản trên mảng
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]
00 [bổ sung, v.v. ] theo nguyên tốĐiều này hoạt động trên các mảng có cùng kích thước
Tuy nhiên, cũng có thể thực hiện các thao tác trên các mảng khác nhau
kích thước nếu NumPy có thể biến đổi các mảng này để tất cả chúng đều có
Cùng kích cỡ. chuyển đổi này được gọi là phát sóng
Hình ảnh dưới đây đưa ra một ví dụ về phát sóng
Hãy xác minh
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]64
Chúng tôi đã sử dụng phát sóng mà không biết
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]65
Một thủ thuật hữu ích
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]66
Mẹo
Phát sóng có vẻ hơi kỳ diệu, nhưng thực ra nó khá tự nhiên khi sử dụng nó khi chúng ta muốn giải quyết vấn đề có dữ liệu đầu ra là một mảng có nhiều chiều hơn dữ liệu đầu vào
Ví dụ đã làm việc. Phát thanh truyền hình
Hãy xây dựng một mảng khoảng cách [tính bằng dặm] giữa các thành phố của Tuyến đường 66. Chicago, Springfield, Saint-Louis, Tulsa, Oklahoma City, Amarillo, Santa Fe, Albuquerque, Flagstaff và Los Angeles
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]67
Rất nhiều vấn đề dựa trên lưới hoặc dựa trên mạng cũng có thể sử dụng phát sóng. Chẳng hạn, nếu chúng ta muốn tính khoảng cách từ gốc của các điểm trên lưới 5x5, chúng ta có thể thực hiện
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]68
Hoặc có màu
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]69
Nhận xét. hàm
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]01 cho phép tạo trực tiếp các vectơ x và y của ví dụ trước, với hai "chiều quan trọng"
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]80
Mẹo
Vì vậy,
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]02 rất hữu ích ngay khi chúng ta phải xử lý các tính toán trên lưới. Mặt khác,
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]03 cung cấp trực tiếp các ma trận có đầy đủ các chỉ số cho các trường hợp chúng tôi không thể [hoặc không muốn] hưởng lợi từ việc phát sóng
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]81
Xem thêm
thảo luận về phát sóng trong chương
làm phẳng
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]82
Kích thước cao hơn. kích thước cuối cùng thoát ra "đầu tiên"
định hình lại
Hoạt động nghịch đảo để làm phẳng
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]83
Hoặc,
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]84
Cảnh báo
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]04 có thể trả lại một lượt xem [cf
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]05]] hoặc sao chép
Mẹo
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]85
coi chừng. định hình lại cũng có thể trả lại một bản sao
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]86
Để hiểu điều này bạn cần tìm hiểu thêm về cách bố trí bộ nhớ của một mảng có nhiều mảng
Thêm một thứ nguyên
Lập chỉ mục với đối tượng
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]06 cho phép chúng ta thêm một trục vào một mảng [bạn đã thấy điều này ở trên trong phần phát sóng]
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]87
Xáo trộn thứ nguyên
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]88
Cũng tạo ra một cái nhìn
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]89
Thay đổi kích thước
Kích thước của một mảng có thể được thay đổi bằng
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]07
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]40
Tuy nhiên, nó không được đề cập đến một nơi nào khác
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]41
Tập thể dục. Thao tác hình dạng
- Xem chuỗi tài liệu cho
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]
08, đặc biệt là phần ghi chú có thêm một số thông tin về bản sao và chế độ xem - Sử dụng
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]
09 thay thế cho>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]
80. Sự khác biệt là gì? . kiểm tra cái nào trả về dạng xem và cái nào là bản sao] - Thử nghiệm với
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]
81 để xáo trộn thứ nguyên
Sắp xếp dọc theo một trục
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]42
Ghi chú
Sắp xếp riêng từng hàng
sắp xếp tại chỗ
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]43
Sắp xếp với chỉ mục ưa thích
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]44
Tìm cực tiểu và cực đại
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]45
Tập thể dục. Sắp xếp
- Hãy thử cả sắp xếp tại chỗ và ngoài chỗ
- Hãy thử tạo các mảng với các kiểu chữ khác nhau và sắp xếp chúng
- Sử dụng
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]82 hoặc>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]83 để kiểm tra kết quả- Hãy xem
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]84 để biết cách tạo đầu vào có thể sắp xếp nhanh hơn- Kết hợp
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]80,>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]86 và>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]08- Nhìn vào từ khóa
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]88 cho>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]86 và viết lại bài tập trước
Bạn cần biết gì để bắt đầu?
Biết cách tạo mảng. ________ 620, ________ 621, ________ 622, ________ 623
Biết hình dạng của mảng với
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]
24, sau đó sử dụng phép cắt để có được các chế độ xem khác nhau của mảng.>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]
25, v.v. Điều chỉnh hình dạng của mảng bằng cách sử dụng>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]
08 hoặc làm phẳng nó bằng>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]
80Lấy tập con các phần tử của mảng và/hoặc sửa đổi giá trị của chúng bằng mặt nạ
>>> b = np.ones[4] + 1 >>> a - b array[[-1., 0., 1., 2.]] >>> a * b array[[2., 4., 6., 8.]] >>> j = np.arange[5] >>> 2**[j + 1] - j array[[ 2, 3, 6, 13, 28]]
46Biết các phép toán linh tinh trên mảng, chẳng hạn như tìm giá trị trung bình hoặc giá trị lớn nhất [
>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]
28,>>> a = np.array[[1, 2, 3, 4]] >>> b = np.array[[4, 2, 2, 4]] >>> a == b array[[False, True, False, True]] >>> a > b array[[False, False, True, False]]
29]. Không cần giữ lại mọi thứ, nhưng có phản xạ tìm kiếm trong tài liệu [tài liệu trực tuyến, ________ 730, ________ 731]Để sử dụng nâng cao. thành thạo việc lập chỉ mục với các mảng số nguyên, cũng như phát sóng. Biết thêm các hàm NumPy để xử lý các hoạt động mảng khác nhau
đọc nhanh
Nếu bạn muốn lướt nhanh qua các bài giảng Scipy đầu tiên để tìm hiểu hệ sinh thái, bạn có thể chuyển trực tiếp sang chương tiếp theo.
Phần còn lại của chương này là không cần thiết để làm theo phần còn lại của phần giới thiệu. Nhưng hãy nhớ quay lại và hoàn thành chương này, cũng như làm thêm một số điều nữa