morgomir silvercloack
morgomir silvercloack

Reputation: 13

Mean of each element of matrices in a list

Hello I'm new in python I couldn't solve my problem. Suppose I have a list (a), this list has many matricies which is the same shape. I want to get one matrix that result of mean of each elements.

here is the list and its elements:

a[0]=[1 2 3]
a[1]=[3 4 5]
a[2]=[6 7 8]

Here is the desired matrix:

 mean=[10/3 13/3 16/3]

Mean of each element of a list of matrices

Actually, this answer is good for me but it's for the R, not python. Sorry if I made a mistake while asking a question.

Upvotes: 1

Views: 719

Answers (3)

Alexandre Mahdhaoui
Alexandre Mahdhaoui

Reputation: 841

Here is a pure python solution that would work with any matrice dimension:

matrice = [
    [1, 2, 3],
    [3, 4, 5],
    [6, 7, 8]
]


def mean_mat(mat):
    dim_axis_0 = mat.__len__()
    mean = [0 for i in range(dim_axis_0)]
    for vector in mat:
        for i, value in enumerate(vector):
            mean[i] += (value / dim_axis_0)
    return mean


print(mean_mat(matrice))
>>> [3.333333333333333, 4.333333333333334, 5.333333333333334]

However, as user1740577 pointed out, you should checkout the Numpy library.

Upvotes: 1

DarrylG
DarrylG

Reputation: 17156

Using Python list comprehension

a = [[1, 2, 3],
     [3, 4, 5],
     [6, 7, 8]]

mean = [sum(row)/len(row) for row in zip(*a)]  # use zip(*a) to transpose matrix 
                                               # since sum along columns
                                               # by summing rows of transposed a
# [3.3333333333333335, 4.333333333333333, 5.333333333333333]

Upvotes: 2

I'mahdi
I'mahdi

Reputation: 24049

try this:

import numpy as np
a= [[1,2,3],[3,4,5],[6,7,8]]
np.mean(a, axis=0)
# array([3.33333333, 4.33333333, 5.33333333])

Upvotes: 0

Related Questions