Vấn đề bao gồm mô hình lan truyền tín hiệu (ví dụ: ánh sáng hoặc âm thanh, v.v.) thông qua một loạt các chướng ngại vật, như trên hình dưới đây. Tín hiệu không thể đi qua bề mặt đáy (địa hình), nhưng nó có thể vượt qua chướng ngại vật. Tôi muốn đếm số lượng chướng ngại vật đi qua.
Địa hình và chướng ngại vật nằm trong mảng numpy 2D (x, y, z). Đây là những gì tôi làm:
output = numpy.zeros(terrain.shape)
obstacles = terrain + obstacle_heights
for i in xrange (obstacles.shape[0]):
for j in xrange (obstacles.shape[1]):
mask = obstacles[i,j] > terrain[i,j:]
output[i,j:][mask] +=1
Kết quả sẽ giống như [0, 0, 0, 1, 1, 1, 2, 3, 4, 4, 4 ...]
mỗi hàng.
Phương pháp này hoạt động tốt (cung cấp các thung lũng trên địa hình được lấp đầy bằng cách sử dụng numpy.maximum.accumulate
). Bây giờ, liệu có thể tăng tốc độ bằng cách sử dụng một giải pháp véc tơ?