Можно ли индексировать столбцы в матрице Rust ndarray
, используя Vec
вместо Slice
объекта?Единственная документация, которую я могу найти, касается нарезки с использованием смежных столбцов
В частности, я пытаюсь реализовать что-то вроде следующего кода в Python:
x = np.array([[1,2,3,4,5,6], [7,8,9,10,11,12]])
idx = [0,1,2,4]
x[:, idx]
Результатом x[:, idx]
будет подмножество матрицы, содержащей все строки и только столбцы, описанные в idx
, т. Е. [0,1,2,4]
.
Я сейчас использую ndarray
(какзаголовок подсказывает) но я не могу найти способ подмножества на несмежных срезах.Например, вы можете передать ndarray
, что может занять Slice
с start
, stop
и index
, но я не могу найти способ передать список столбцов, которые не могут быть описаны с использованиемSlice
объект.
Например:
#[macro_use]
extern crate ndarray;
fn main() {
let mut x = array![[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12]];
let idx = vec![0, 1, 2, 4];
// The following works as expected
let y = x.slice(s![.., 0..2]);
println!("{:?}", y);
// This is conceptually what I would like to do but
// It does not work.
let y = x.slice(s![.., idx]);
}