Skip to content

Commit 61d55cd

Browse files
committed
updated Window::new to use new_with_stride with unit stride
1 parent 2c0ae32 commit 61d55cd

File tree

1 file changed

+7
-24
lines changed

1 file changed

+7
-24
lines changed

src/iterators/windows.rs

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,32 +20,15 @@ impl<'a, A, D: Dimension> Windows<'a, A, D> {
2020
E: IntoDimension<Dim = D>,
2121
{
2222
let window = window_size.into_dimension();
23-
ndassert!(
24-
a.ndim() == window.ndim(),
25-
concat!(
26-
"Window dimension {} does not match array dimension {} ",
27-
"(with array of shape {:?})"
28-
),
29-
window.ndim(),
30-
a.ndim(),
31-
a.shape()
32-
);
33-
let mut size = a.dim;
34-
for (sz, &ws) in size.slice_mut().iter_mut().zip(window.slice()) {
35-
assert_ne!(ws, 0, "window-size must not be zero!");
36-
// cannot use std::cmp::max(0, ..) since arithmetic underflow panics
37-
*sz = if *sz < ws { 0 } else { *sz - ws + 1 };
38-
}
23+
let ndim = window.ndim();
3924

40-
let window_strides = a.strides.clone();
41-
42-
unsafe {
43-
Windows {
44-
base: ArrayView::new(a.ptr, size, a.strides),
45-
window,
46-
strides: window_strides,
47-
}
25+
let mut unit_stride = D::zeros(ndim);
26+
let stride_slice = unit_stride.slice_mut();
27+
for s in stride_slice.iter_mut() {
28+
*s = 1;
4829
}
30+
31+
Windows::new_with_stride(a, window, unit_stride)
4932
}
5033

5134
pub(crate) fn new_with_stride<E>(a: ArrayView<'a, A, D>, window_size: E, strides: E) -> Self

0 commit comments

Comments
 (0)