首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >downcast_iter中的偏移和极坐标下的串联切片

downcast_iter中的偏移和极坐标下的串联切片
EN

Stack Overflow用户
提问于 2022-07-05 10:57:02
回答 1查看 33关注 0票数 0

在极地,我看到的返回结果与我所期望的不同,当我使用切片与串联和试图得到的偏移。

我正在创建一个系列,然后切片它:

代码语言:javascript
复制
// Make a vec of 3 items, called foo, bar baz
let string_values: Vec<&str> = vec!["foo", "bar", "baz"];
// Add it to a series, this is without dataframes
let series = Series::new("string_values", string_values);

//shape: (3,)
// Series: 'string_values' [str]
// [
//  "foo"
//  "bar"
//  "baz"
// ]
println!("{:?}", series);

这将返回一个新的系列。

然后,我可以使用downcast_iter()获取偏移量:

代码语言:javascript
复制
// Now we should be able to downcast iter to get the offsets.
// returns [0, 3, 6, 9]
// 0-3 = foo
// 3-6 = bar
// 6-9 = baz
series.utf8().unwrap().downcast_iter().for_each(|array| {
    println!("{:?}", array.offsets());
});

到目前为止还不错。

然后我切了它:

代码语言:javascript
复制
//shape: (2,)
// Series: 'string_values' [str]
// [
//  "bar"
//  "baz"
// ]
let series_slice = series.slice(1, 2);
println!("{:?}", series_slice);

这将返回正确的值。

然后,我再次尝试使用downcast_iter()

代码语言:javascript
复制
// Now we should be able to downcast iter to get the offsets for the slice.
// This returns [3, 6, 9]
// Is "foo" still referenced?
series_slice.utf8().unwrap().downcast_iter().for_each(|array| {
    println!("{:?}", array.offsets());
});

它返回3,6,9。为什么返回9?这个系列的长度是6。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-05 13:26:10

箭头中的缓冲区可以共享。除了数据之外,他们还有一个offset和一个length

原始箭头字符串数组包含以下数据:

代码语言:javascript
复制
data:     foobarbaz
offsets:  0, 3, 6, 9
offset:   0
length:   3

检索元素i在伪代码中使用以下算法:

代码语言:javascript
复制
let offset = array.offset
let start_index = offsets[offset + i]
let end_index = offsets[offset + i + 1]

let string_value = data[start_index..end_index]

当您分割数组时,我们不会复制任何数据。我们只更新offsetlength,这样我们就有了表示切片数组的所有信息:

代码语言:javascript
复制
data:     foobarbaz
offsets:  0, 3, 6, 9
offset:   1
length:   2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72868252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档