2012-05-25 32 views
7

Tôi muốn kiểm tra xem hai thứ hai là các khung nhìn chồng chéo của cùng một mảng dữ liệu bên dưới.Tôi làm cách nào để kiểm tra xem hai lát mảng có sọc có giống nhau không (hoặc chồng chéo)?

Để kiểm tra xem hai lát là giống hệt nhau, tôi có thể làm một cái gì đó như:

a.base is b.base and a.shape == b.shape and a.data == b.data 

Việc so sánh các bộ đệm dường như làm việc trong một trường hợp đơn giản - bất cứ ai có thể cho tôi biết nếu nó hoạt động nói chung?

Thật không may, điều này sẽ không hoạt động cho các lát chồng chéo, và tôi đã không tìm ra cách trích xuất từ ​​bộ đệm chính xác những gì bù đắp của nó nằm trong dữ liệu cơ bản - có lẽ ai đó có thể giúp tôi với điều này?

Ngoài ra, giả sử ab là các lát xc là một lát của b. Vì dữ liệu cơ bản giống nhau, tôi cũng muốn phát hiện các chồng chéo giữa ca. Có vẻ như tôi sẽ có thể thoát khỏi việc so sánh với bộ đệm và hình dạng ... nếu có ai đó có thể cho tôi biết chính xác như thế nào, tôi sẽ biết ơn.

Trả lời

9

numpy.may_share_memory() là phương pháp phỏng đoán tốt nhất mà chúng tôi hiện có. Đó là thận trọng, heuristic; nó có thể cung cấp cho bạn những mặt tích cực sai, nhưng nó sẽ không mang lại cho bạn những âm tính giả. Tôi nghĩ rằng có thể có những cách để cải thiện heuristic là chính xác 100%. Nếu họ pan ra, họ sẽ được xếp vào chức năng đó, vì vậy đó là cách tốt nhất về phía trước.

+0

Tôi có thể gặp phải những trường hợp nào? Nếu chỉ những lát cắt ngang của nó với bước không thống nhất tạo ra dương tính giả, tôi có thể sống với điều đó .... – shaunc

+2

'x [0 :: 2]'/'x [1 :: 2]'. 'x [:, 0: 5]', 'x [:, 5:10]'. 'x = np.dstack (* args); np.may_share_memory (x [0], x [1]) '. –

1

Có thể so sánh vị trí các chỉ mục trong bộ nhớ sử dụng thuộc tính ctypes của các mảng. Nó có thể mất một số công việc, vì vậy bạn có thể muốn quay trở lại và xem nếu có một cách khác nhau để giải quyết vấn đề của bạn.

Các vấn đề liên quan