Tôi muốn khởi tạo ma trận A
, sử dụng phương trình A_i,j = f(i,j)
cho một số f
(Điều này không quan trọng).Python NumPy: Cách điền vào ma trận bằng cách sử dụng phương trình
Tôi làm cách nào để tránh tình huống có hai vòng lặp chính xác?
Tôi muốn khởi tạo ma trận A
, sử dụng phương trình A_i,j = f(i,j)
cho một số f
(Điều này không quan trọng).Python NumPy: Cách điền vào ma trận bằng cách sử dụng phương trình
Tôi làm cách nào để tránh tình huống có hai vòng lặp chính xác?
numpy.fromfunction phù hợp với hóa đơn tại đây.
Ví dụ từ doc:
>>> import numpy as np
>>> np.fromfunction(lambda i, j: i + j, (3, 3), dtype=int)
array([[0, 1, 2],
[1, 2, 3],
[2, 3, 4]])
Người ta cũng có thể nhận được các chỉ số của mảng của bạn với numpy.indices
và sau đó áp dụng các chức năng f
trong một thời trang vectorized,
import numpy as np
shape = 1000, 1000
Xi, Yj = np.indices(shape)
A = (2*Xi + 3*Yj).astype(np.int) # or any other function f(Xi, Yj)
Tuyệt vời, cảm ơn bạn. –
Cảnh báo: tài liệu không giải thích rõ ràng, nhưng 'np.fromfunction (f, hình dạng, dtype = dtype)' là một trình bao bọc mỏng xung quanh 'f (* np.indices (hình dạng, dtype = dtype))'. Nó không thực hiện một cuộc gọi riêng lẻ đến 'f' cho mỗi ô, vì vậy nếu bạn truyền một hàm không hoạt động theo cách được vector hóa, bạn sẽ nhận được các kết quả lạ và sai. – user2357112