38

1D Histogram

Unsolved
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.]

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

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.

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

admin • 7 months, 4 weeks ago

0

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

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.

hamza1 • 7 months, 3 weeks ago

0

def get_histogram(arr):
arr = np.array(arr)
arr_count = [len(np.where(arr==each)) 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]

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

darien • 2 months ago

0

# Please do not change the below function name and parameters

def get_histogram(arr):

return np.bincount(arr)[1:]