Open
Description
Before 0.15.3, stack
would return an array with C-layout when given C-layout views. But with 0.15.3, this behavior changed and now we get F-layout outputs. This demonstration program will succeed if you pin ndarray to "=0.15.2"
and fail if you pin to "=0.15.3"
:
use ndarray::{arr2, stack, Axis};
fn main() {
// Here are some 2x3 arrays.
let a = arr2(&[[1, 2, 3], [4, 5, 6]]);
let b = &a * 2;
assert_eq!(a.shape(), b.shape());
assert_eq!(a.shape(), [2, 3]);
// When we stack them with Axis(2), we'll get a 2x3x4 array
// with the last dimension stored continuously.
let c = stack(Axis(2), &[a.view(), b.view(), a.view(), b.view()]).unwrap();
assert_eq!(c.shape(), [2, 3, 4]);
assert!(c.is_standard_layout());
dbg!(&c);
}
I don't see anything about the layout of stack
's return value in the docs so I assumed that it would match the inputs. So even if no code behavior change is warranted, the docs should really include a note explaining that you might get a different layout than your inputs.