# Tensor condition slice in libtorch

**URL:** <https://discuss.pytorch.org/t/tensor-condition-slice-in-libtorch/93564>\
**Category:** C++\
**Created:** [August 21, 2020, 12:55am UTC](https://discuss.pytorch.org/t/tensor-condition-slice-in-libtorch/93564 "2020-08-21T00:55:43Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![zhijian\_li](https://discuss.pytorch.org/user_avatar/discuss.pytorch.org/zhijian_li/32/6415_2.png) [@zhijian\_li](https://discuss.pytorch.org/u/zhijian_li)\
**Post date:** [August 21, 2020, 12:55am UTC](https://discuss.pytorch.org/t/tensor-condition-slice-in-libtorch/93564/1 "2020-08-21T00:55:43Z")

</div>

Hi, I have tensor slicing problem here:  
In python:  
I can use `output[output < 0.5] = 0` to set somevalues to `0`  
In C++:  
I don’t know how to do it.

---

<div class="post-metadata">

**Author:** ![albanD](https://discuss.pytorch.org/user_avatar/discuss.pytorch.org/alband/32/215_2.png) [@albanD](https://discuss.pytorch.org/u/albanD)\
**Post date:** [August 21, 2020, 1:01am UTC](https://discuss.pytorch.org/t/tensor-condition-slice-in-libtorch/93564/2 "2020-08-21T01:01:27Z")

</div>

I think the `.index()` method is used to mimick the `[]` behavior.  
You might want to check the doc in details though as I’m not sure what this function can do exactly 😕

---

<div class="post-metadata">

**Author:** ![zhijian\_li](https://discuss.pytorch.org/user_avatar/discuss.pytorch.org/zhijian_li/32/6415_2.png) [@zhijian\_li](https://discuss.pytorch.org/u/zhijian_li)\
**Post date:** [August 21, 2020, 1:09am UTC](https://discuss.pytorch.org/t/tensor-condition-slice-in-libtorch/93564/3 "2020-08-21T01:09:08Z")

</div>

Thanks for your hint, I’ve checked the [docs](https://pytorch.org/cppdocs/notes/tensor_indexing.html), there is no condition indexing method found.

---

<div class="post-metadata">

**Author:** ![albanD](https://discuss.pytorch.org/user_avatar/discuss.pytorch.org/alband/32/215_2.png) [@albanD](https://discuss.pytorch.org/u/albanD)\
**Post date:** [August 21, 2020, 1:11am UTC](https://discuss.pytorch.org/t/tensor-condition-slice-in-libtorch/93564/4 "2020-08-21T01:11:19Z")

</div>

Interesting.  
Then you’ll have to use masked\_fill directly then I guess [https://pytorch.org/cppdocs/api/function\_namespaceat\_1a5118bdabdb9cc642a7a12ceaacfd0531.html?highlight=masked\_fill](https://pytorch.org/cppdocs/api/function_namespaceat_1a5118bdabdb9cc642a7a12ceaacfd0531.html?highlight=masked_fill)

---

<div class="post-metadata">

**Author:** ![zhijian\_li](https://discuss.pytorch.org/user_avatar/discuss.pytorch.org/zhijian_li/32/6415_2.png) [@zhijian\_li](https://discuss.pytorch.org/u/zhijian_li)\
**Post date:** [August 21, 2020, 1:14am UTC](https://discuss.pytorch.org/t/tensor-condition-slice-in-libtorch/93564/5 "2020-08-21T01:14:06Z")

</div>

any example to create a mask?

---

<div class="post-metadata">

**Author:** ![albanD](https://discuss.pytorch.org/user_avatar/discuss.pytorch.org/alband/32/215_2.png) [@albanD](https://discuss.pytorch.org/u/albanD)\
**Post date:** [August 21, 2020, 1:28am UTC](https://discuss.pytorch.org/t/tensor-condition-slice-in-libtorch/93564/6 "2020-08-21T01:28:40Z")

</div>

> [@zhijian\_li](#):
>
> output \< 0.5

This is actually creating a boolean Tensor with the mask you want 😃

---

<div class="post-metadata">

**Author:** ![zhijian\_li](https://discuss.pytorch.org/user_avatar/discuss.pytorch.org/zhijian_li/32/6415_2.png) [@zhijian\_li](https://discuss.pytorch.org/u/zhijian_li)\
**Post date:** [August 21, 2020, 1:36am UTC](https://discuss.pytorch.org/t/tensor-condition-slice-in-libtorch/93564/7 "2020-08-21T01:36:13Z")

</div>

Thank you, I’ve found the solution, and tested it.  
`output.index_put_({output < 0.5}, 0)`
