Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to pad an array with zeros?

fn main() {
    let arr: [u8;8] = [97, 112, 112, 108, 101];
    println!("Len is {}",arr.len());
    println!("Elements are {:?}",arr);
}
error[E0308]: mismatched types
 --> src/main.rs:2:23
  |
2 |     let arr: [u8;8] = [97, 112, 112, 108, 101];
  |              ------   ^^^^^^^^^^^^^^^^^^^^^^^^ expected an array with a fixed size of 8 elements, found one with 5 elements
  |              |
  |              expected due to this

Is there any way to pad the remaining elements with 0's? Something like:

let arr: [u8;8] = [97, 112, 112, 108, 101].something();
like image 520
Maddu Swaroop Avatar asked Oct 05 '21 04:10

Maddu Swaroop


People also ask

How do you add zeros to an array?

You can use numpy. pad , which pads default 0 to both ends of the array while in constant mode, specify the pad_width = (0, N) will pad N zeros to the right and nothing to the left: N = 4 np.

How do you add padding to an array in Python?

pad() function is used to pad the Numpy arrays. Sometimes there is a need to perform padding in Numpy arrays, then numPy. pad() function is used. The function returns the padded array of rank equal to the given array and the shape will increase according to pad_width.

How do I extend a NumPy array with zeros?

You can use the zeros function to create a NumPy array with all zeros. You can use the NumPy arange function to create NumPy arrays as sequences of regularly spaced values. All of those methodologies enable you to create a new NumPy array. But often times, you'll have an existing array and you need to add new elements.

What is padding an array?

The array padding transformation sets a dimension in an array to a new size. The goal of this transformation is to reduce the number of memory system conflicts. The transformation is applied to a full function AST. The new size can be specified by the user or can be computed automatically.

How to pad an array with zeros or ones in Python?

In this article, we show how to pad an array with zeros or ones in Python using numpy. Say, you want to fill an array with all zeros or all ones. Numpy has built-in functions that allows us to do this in Python. We can create one-dimensional, two-dimensional, three-dimensional arrays, etc. padded with zeros or ones.

How to create an array with 4 zeros in NumPy?

So, first, we must import numpy as np. We then create a variable named array1 and set it equal to np.zeros (4) What this line of code does is it creates a one-dimensional array with 4 zeros. We then output the contents of array1, which you can see is an array with 4 zeros. We then create an array called array2 padded with 4 ones.

How to create a one-dimensional array padded with zeros or ones?

So the np.zeros () function creates an array padded with zeros. And the np.ones () function creates an array padded with ones. So above we showed how to create a one-dimensional array padded with zeros or ones. Now we will show how to create a 2-dimensional array padded with zeros or ones.

How to fill an array with all zeros or all ones?

Say, you want to fill an array with all zeros or all ones. Numpy has built-in functions that allows us to do this in Python. We can create one-dimensional, two-dimensional, three-dimensional arrays, etc. padded with zeros or ones.


Video Answer


2 Answers

In addition to the other answers, you can use const generics to write a dedicated method.

fn pad_zeroes<const A: usize, const B: usize>(arr: [u8; A]) -> [u8; B] {
    assert!(B >= A); //just for a nicer error message, adding #[track_caller] to the function may also be desirable
    let mut b = [0; B];
    b[..A].copy_from_slice(&arr);
    b
}

Playground

like image 146
Aiden4 Avatar answered Sep 20 '22 19:09

Aiden4


You can use concat_arrays macro for it:

use concat_arrays::concat_arrays;

fn main() {
    let arr: [u8; 8] = concat_arrays!([97, 112, 112, 108, 101], [0; 3]);
    println!("{:?}", arr);
}

I don't think it's possible to do without external dependencies.

like image 35
Maxim Gritsenko Avatar answered Sep 20 '22 19:09

Maxim Gritsenko