# Data Analysis with Python Projects - Mean-Variance-Standard Deviation Calculator

Tell us what’s happening:
Hi, everyone,
I am taking this general course about Python.
The result of my code shows `array[], array[]...,`
though I am seeking a way not to show such words “array” but the result inside the bracelet directly.
Thank you all for reading.

Your code so far

``````        import numpy as np

def calculate(list):
if len(list)<9:
print("List must contain nine numbers.")
else:
a=np.reshape(list,(3,3))
b=(np.mean(a,axis=0),np.mean(a,axis=1),np.mean(a))
c=(np.var(a,axis=0),np.var(a,axis=1),np.var(a))
d=(np.std(a,axis=0),np.std(a,axis=1),np.std(a))
e=(np.max(a,axis=0),np.max(a,axis=1),np.max(a))
f=(np.min(a,axis=0),np.min(a,axis=1),np.min(a))
g=(np.sum(a,axis=0),np.sum(a,axis=1),np.sum(a))
calculations={  'mean': [b],'variance': [c],'standard deviation': [d],'max': [e],'min': [f],'sum': [g] }
return calculations
print(calculate([2,6,2,8,4,0,1,5,7]))
``````

Your browser information:

Challenge: Mean-Variance-Standard Deviation Calculator

Link to the challenge:

2 Likes

So, you get for example `'mean': [(array([3.66666667, 5. , 3. ]), array([3.33333333, 4. , 4.33333333]), 3.888888888888889)] `, the outer square parenthesis is because you have written `'mean': [b]`, removing the square parenthesis you get instead `'mean': (array([3.66666667, 5. , 3. ]), array([3.33333333, 4. , 4.33333333]), 3.888888888888889)` - the square parenthesis

the rest is because of what the value of `b` is
add `print(b)` and you get `(array([3.66666667, 5. , 3. ]), array([3.33333333, 4. , 4.33333333]), 3.888888888888889)`
if you don’t want that you need to change the value of `b`

I’ve edited your post for readability. When you enter a code block into a forum post, please precede it with a separate line of three backticks and follow it with a separate line of three backticks to make it easier to read.

You can also use the “preformatted text” tool in the editor (`</>`) to add backticks around text.

See this post to find the backtick on your keyboard.
Note: Backticks (`) are not single quotes (’).

Thank you for the advice!!

you can convert array to list like this :

``````b = [(np.mean(a,axis=0)).tolist(),(np.mean(a,axis=1)).tolist(),np.mean(a)]
``````
3 Likes

Hi, and thanks in advance for any help the community can offer.

Have written the following solution for this problem:

``````import numpy as np

def calculate(list):
if len(list) != 9:
raise ValueError('List must contain nine numbers.')
else:
a = list[:3]
b = list[3:6]
c = list[6:]
m1 = np.array([a, b, c])
calculations = {
'mean ': (np.mean(m1, axis=0).tolist(), np.mean(m1, axis=1).tolist(), np.mean(list)),
'variance ': (np.var(m1, axis=0).tolist(), np.var(m1, axis=1).tolist(), np.var(list)),
'standard deviation ': (np.std(m1, axis=0).tolist(), np.std(m1, axis=1).tolist(), np.std(list)),
'max ': (np.max(m1, axis=0).tolist(), np.max(m1, axis=1).tolist(), np.max(list)),
'min ': (np.min(m1, axis=0).tolist(), np.min(m1, axis=1).tolist(), np.min(list)),
'sum ': (np.sum(m1, axis=0).tolist(), np.sum(m1, axis=1).tolist(), np.sum(list))
}
return(calculations)
``````

Which appears to do the job mostly, but I’m still getting the following 2 errors:

``````ERROR: test_calculate (test_module.UnitTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/ImperfectPepperyApplicationframework/test_module.py", line 10, in test_calculate
self.assertAlmostEqual(actual, expected, "Expected different output when calling 'calculate()' with '[2,6,2,8,4,0,1,5,7]'")
File "/usr/lib/python3.8/unittest/case.py", line 943, in assertAlmostEqual
diff = abs(first - second)
TypeError: unsupported operand type(s) for -: 'dict' and 'dict'

======================================================================
ERROR: test_calculate2 (test_module.UnitTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/ImperfectPepperyApplicationframework/test_module.py", line 15, in test_calculate2
self.assertAlmostEqual(actual, expected, "Expected different output when calling 'calculate()' with '[9,1,5,3,3,3,2,9,0]'")
File "/usr/lib/python3.8/unittest/case.py", line 943, in assertAlmostEqual
diff = abs(first - second)
TypeError: unsupported operand type(s) for -: 'dict' and 'dict'

----------------------------------------------------------------------
``````

Can anyone help me understand what I’m doing wrong here? Can’t quite figure it out.

Thanks,
Hal

1 Like

After I was done with this, I kept having errors and I don’t know where the problem is

Hi,
Your calculations dictionary contains tuples `()` but required list `[]`. Maybe this causes a type error.

2 Likes

I tried this and I still get error messages.

``````import numpy as np

def calculate(list):
if len(list)<9:
raise ValueError("List must contain nine numbers.")
else:
a=np.reshape(list,(3,3))
calculations = {'mean' : [(np.mean(a,axis=0)).tolist(),(np.mean(a,axis=1)).tolist(),(np.mean(a)).tolist()] }
calculations ['variance'] = [(np.var(a,axis=0)).tolist(),(np.var(a,axis=1)).tolist(),(np.var(a)).tolist()]
calculations ['standard deviation'] = [(np.std(a,axis=0)).tolist(),(np.std(a,axis=1)).tolist(),(np.std(a)).tolist()]
calculations ['max'] = [(np.max(a,axis=0)).tolist(),(np.max(a,axis=1)).tolist(),(np.max(a)).tolist()]
calculations ['min'] = [(np.min(a,axis=0)).tolist(),(np.min(a,axis=1)).tolist(),(np.min(a)).tolist()]
calculations ['sum'] = [(np.sum(a,axis=0)).tolist(),(np.sum(a,axis=1)).tolist(),(np.sum(a)).tolist()]
return calculations
``````

Hi, please check your code if you’ve used the types and format as mentioned in the instructions.