change 2d cumulative calculation (#15346)
This commit is contained in:
committed by
GitHub
parent
708b8380b7
commit
d83aeebcca
@ -283,26 +283,20 @@ impl CumulativeOffsets {
|
|||||||
|
|
||||||
pub fn from_raw_2d<T>(raw: &[Vec<Vec<T>>]) -> CumulativeOffsets {
|
pub fn from_raw_2d<T>(raw: &[Vec<Vec<T>>]) -> CumulativeOffsets {
|
||||||
let mut total_count: usize = 0;
|
let mut total_count: usize = 0;
|
||||||
let cumulative_offsets: Vec<CumulativeOffset> = raw
|
let mut cumulative_offsets = Vec::with_capacity(0);
|
||||||
.iter()
|
for (i, v_outer) in raw.iter().enumerate() {
|
||||||
.enumerate()
|
for (j, v) in v_outer.iter().enumerate() {
|
||||||
.map(|(i, v)| {
|
let len = v.len();
|
||||||
v.iter()
|
if len > 0 {
|
||||||
.enumerate()
|
if cumulative_offsets.is_empty() {
|
||||||
.filter_map(|(j, v)| {
|
// the first inner, non-empty vector we find gives us an approximate rectangular shape
|
||||||
let len = v.len();
|
cumulative_offsets = Vec::with_capacity(raw.len() * v_outer.len());
|
||||||
if len > 0 {
|
}
|
||||||
let result = CumulativeOffset::new(vec![i, j], total_count);
|
cumulative_offsets.push(CumulativeOffset::new(vec![i, j], total_count));
|
||||||
total_count += len;
|
total_count += len;
|
||||||
Some(result)
|
}
|
||||||
} else {
|
}
|
||||||
None
|
}
|
||||||
}
|
|
||||||
})
|
|
||||||
.collect::<Vec<_>>()
|
|
||||||
})
|
|
||||||
.flatten()
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
cumulative_offsets,
|
cumulative_offsets,
|
||||||
|
Reference in New Issue
Block a user