Tôi đang triển khai Phép nhân ma trận của Strassen bằng python. Trong bước phân chia, chúng tôi chia một ma trận lớn hơn thành các ma trận nhỏ hơn. Có một chức năng numpy tích hợp để tách một ma trận?Làm thế nào để tách một ma trận thành 4 khối bằng cách sử dụng numpy?
6
A
Trả lời
11
Không chính xác, nhưng sử dụng ký pháp cắt mảng, bạn sẽ có thể tự làm điều đó khá dễ dàng.
>>> A = np.linspace(0,24,25).reshape([5,5,])
>>> A
array([[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
[ 15., 16., 17., 18., 19.],
[ 20., 21., 22., 23., 24.]])
Make B 2x2 trên bên trái trong A:
>>> B = A[0:2,0:2]
Lưu ý rằng B là một cái nhìn, nó chia sẻ dữ liệu với A
>>> B[1,1] = 60
>>> print A
[[ 0. 1. 2. 3. 4.]
[ 5. 60. 7. 8. 9.]
[ 10. 11. 12. 13. 14.]
[ 15. 16. 17. 18. 19.]
[ 20. 21. 22. 23. 24.]]
Nếu bạn cần phải sao chép dữ liệu từ A, sử dụng phương thức sao chép:
>>> B = A[0:2,0:2].copy()
>>> B
array([[ 0., 1.],
[ 5., 60.]])
>>> B[1,1] = 600
>>> B
array([[ 0., 1.],
[ 5., 600.]])
>>> A
array([[ 0., 1., 2., 3., 4.],
[ 5., 60., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
[ 15., 16., 17., 18., 19.],
[ 20., 21., 22., 23., 24.]])
2
Tôi gặp phải cùng một vấn đề và tìm thấy một số tích hợp chức năng NumPy để chia ma trận của tôi vào 4 submatrices (ma trận của tôi có kích thước 2^N * 2^N)
Đây là mã tôi đã viết:
upper_half = np.hsplit(np.vsplit(my_matrix, 2)[0], 2)
lower_half = np.hsplit(np.vsplit(my_matrix, 2)[1], 2)
upper_left = upper_half[0]
upper_right = upper_half[1]
lower_left = lower_half[0]
lower_right = lower_half[1]
bonus để tái kết hợp chúng bằng cách sử numPy:
C=np.vstack([np.hstack([c11, c12]), np.hstack([c21, c22])])
vsplit hsplit hstack và vstack dường như được thực hiện cho mục đích đó
Các vấn đề liên quan
- 1. Ma trận Numpy thành mảng
- 2. Làm thế nào để thay thế biểu tượng cho ma trận bằng cách sử dụng symPy và numPy
- 3. Numpy: Cách phân chia ngẫu nhiên/chọn ma trận thành ma trận n khác nhau
- 4. Nhân một số ma trận trong numpy
- 5. Các ma trận rất lớn sử dụng Python và NumPy
- 6. Làm thế nào để chuyển đổi ma trận xoay 3x3 thành ma trận 4x4?
- 7. Hình nhân số ma trận dạng khối
- 8. Làm cách nào để tạo một mảng/ma trận trống trong NumPy?
- 9. Làm thế nào để tạo ra một boxplot trong ggplot sử dụng một ma trận
- 10. Chuyển đổi mảng 1D thành ma trận khối u
- 11. Làm thế nào để phân chia một ma trận thành bằng các phần?
- 12. chuyển vị/xoay một khối ma trận trong python
- 13. Ma trận đối xứng 'thông minh' Numpy
- 14. Làm thế nào để chuyển đổi ma trận một cách tối ưu bằng cách sử dụng blas?
- 15. ma trận Trồng theo cột trong NumPy
- 16. Giờ hoạt động bằng cách sử dụng ma trận
- 17. Làm cách nào để chuẩn hóa ma trận?
- 18. Python: Thiết lập một phần tử của ma trận Numpy
- 19. Làm thế nào để tách danh sách python thành các khối có kích thước bằng nhau?
- 20. Tạo ma trận đối xứng trong Numpy
- 21. làm thế nào để tạo ra ma trận tương tự trong python numpy?
- 22. Làm thế nào để tạo ma trận nhận dạng với numpy
- 23. Làm thế nào để thử, ngoại trừ một hoạt động ma trận bất hợp pháp do số ít trong NumPy
- 24. Làm cách nào để tăng tốc độ tạo ma trận chuyển tiếp trong Numpy?
- 25. Lưu và tải một Ma trận Numpy trong python
- 26. hiểu cách sử dụng Ma trận ImageView
- 27. NumPy ma trận thủ đoạn gian trá - tổng của ma trận nghịch đảo lần
- 28. Extracting cột n đầu tiên của một ma trận NumPy
- 29. Lặp lại các hàng ma trận Numpy để áp dụng một hàm?
- 30. Bộ phận Ma trận Trái và Giải quyết Numpy