'NumPy Slicing HackerRank

I have wrote a function named array_slice which gets four numbers n, n_dim, n_row, n_col from the user and performs array operations given below.

Instructions:

  1. Create an array x of shape (n_dim, n_row, n_col), having first n natural numbers.
  2. Create a Boolean array b of shape (2,).
  3. Print the values for following expressions: x[b] and x[b,:,1:3]

For example if we have input 30, 2, 3, 5, for each corresponding parameters n, n_dim, n_row, n_col, Then the output prints will be as:

[[[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]]]
[[[ 1 2] [ 6 7] [11 12]]]

The written code is:

import numpy as np

# Enter your code here. Read input from STDIN. Print output to STDOUT
def array_slice(n,n_dim,n_row,n_col):
    x=np.array(n, dtype=int,  ndmin=n_dim).reshape(n_row,n_col)
    b=np.array([True,False],dtype="bool",ndmin=n_dim).reshape(2,)
    print(x[b])
    print(x[b,:,1:3])


    if __name__ == '__main__':
        n = int(input())
        n_dim = int(input())
        n_row = int(input())
        n_col = int(input())
        array_slice(n,n_dim,n_row,n_col)

I went through official documentation NumPy, but still couldn't understand the error. I tried all possible ways with arange and array but I'm unable to get solution. Please help me out



Solution 1:[1]

I have tried the following code for x array using np.arrange:

x = np.arange(n, dtype=int).reshape(n_dim, n_row, n_col)

it will work:

[[[ 0  1  2  3  4]
  [ 5  6  7  8  9]
  [10 11 12 13 14]]]
[[[ 1  2]
  [ 6  7]
  [11 12]]]

Solution 2:[2]

This passed all test cases:

x = np.arange(n, dtype=int).reshape(n_dim, n_row, n_col)
b = np.array([True, False], dtype="bool", ndmin=n_dim).reshape(2,)
print(x[b])
print(x[b, :, 1:3])

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Ali_Sh
Solution 2 Tyler2P