38

1D Histogram

Unsolved
Data Wrangling
Fundamentals

Difficulty: 2 | Problem written by Sakar Ghimire
A histogram represents the frequency distribution of data. The idea is to take a list of values and make a tally of how many times each value occurs.

Given a 1D NumPy array, create a histogram of the data represented as a NumPy array where the index represents the number and the value represents the count. Note that the first index (position 0) represents how many times number 1 occurs.

There are 2 things to note:

  • The parameter range default from min to max, however the task requires histogram starting from 1.
  • bins default to only 10 values, therefore we must set it to max cover all the numbers in the np.array
Sample Input:
<class 'list'>
arr: [1, 1, 1, 2, 2, 3, 5, 6, 7, 8, 9, 6, 8, 9, 7, 2, 9]

Expected Output:
<class 'numpy.ndarray'>
[3. 3. 1. 0. 1. 2. 2. 2. 3.]

This is a premium problem, to view more details of this problem please sign up for MLPro Premium. MLPro premium offers access to actual machine learning and data science interview questions and coding challenges commonly asked at tech companies all over the world

MLPro Premium also allows you to access all our high quality MCQs which are not available on the free tier.

Not able to solve a problem? MLPro premium brings you access to solutions for all problems available on MLPro

Get access to Premium only exclusive educational content available to only Premium users.

Have an issue, the MLPro support team is available 24X7 to Premium users.

This is a premium feature.
To access this and other such features, click on upgrade below.

Log in to post a comment

Comments
Jump to comment-55
uahnbu • 8 months, 1 week ago

2

There are 2 things to note:

  • The parameter range default from min to max, however the task requires histogram starting from 1.
  • bins default to only 10 values, therefore we must set it to max cover all the numbers in the np.array
def get_histogram(arr):
    max = np.amax(arr)
    hist, bin = np.histogram(arr, bins=max, range=(1, max))
    return hist

 

Jump to comment-69
admin • 7 months, 4 weeks ago

0

Thank you for this comment! We have updated the problem description to include your note.

Jump to comment-61
tien • 8 months ago

0

def get_histogram(arr):
    uniques, uniq_idx, counts = np.unique(arr, return_index=True, return_counts=True)
    return counts

It returns as
[3 3 1 1 2 2 2 3]
not 
[3. 3. 1. 0. 1. 2. 2. 2. 3.] 
which makes sense since there is nothing as zero duplicate in an array. 

Jump to comment-74
hamza1 • 7 months, 3 weeks ago

0

def get_histogram(arr):
    arr = np.array(arr)
    arr_count = [len(np.where(arr==each)[0]) for each in range(1, max(arr)+1)]
    return arr_count

Input : arr = [1, 1, 1, 2, 2, 3, 5, 6, 7, 8, 9, 6, 8, 9, 7, 2, 9]

output: [3, 3, 1, 0, 1, 2, 2, 2, 3]

Jump to comment-97
shiva6 • 6 months, 2 weeks ago

0

The Layman way:

def get_histogram(arr):
    m=np.amax(arr)
    li = np.zeros(shape=m)
    for i in arr:
        li[i-1]+=1
    return li

 

Jump to comment-183
darien • 2 months ago

0

# Please do not change the below function name and parameters

def get_histogram(arr):

  return np.bincount(arr)[1:]

Ready.

Input Test Case

Please enter only one test case at a time
numpy has been already imported as np (import numpy as np)