1

I have a matlab code that I'm trying to translate in python. I'm new on python but I have been able to answer a lot of questions googling a little bit. But now, I'm trying to figure out the following: I have a for loop when I apply different things on each column, but you don't know the number of columns. For example. In matlab, nothing easier than this:

    for n = 1:size(x,2); y(n) = mean(x(:,n)); end  

But I have no idea how to do it on python when, for example, the number of columns is 1, because I can't do x[:,1] in python. Any idea?

Thanx

4

3 回答 3

2

是的,如果您使用 numpy,您可以使用 x[:,1],并且您还可以获得其他数据结构(向量而不是列表),matlab 和 numpy 之间的主要区别在于 matlab 使用矩阵进行计算,而 numpy 使用向量,但是你习惯了,我认为本指南会帮助你。

于 2013-06-26T19:15:51.717 回答
1

试试numpy。它是一个用 C 编写的高性能数学库的 python 绑定。我相信它具有相同的矩阵切片操作概念,并且比用纯 python 编写的相同代码要快得多(在大多数情况下)。

关于你的例子,我认为最接近的是使用numpy.mean.

在纯 python 中,很难计算列的平均值,但是您可以转置矩阵,您可以使用以下方法来实现:

# there are no builtin avg function
def avg(lst):
    return sum(lst)/len(lst)

rows = list(avg(row) for row in a)
于 2013-06-26T19:10:42.410 回答
1

这是一种方法

from numpy import *
x=matrix([[1,2,3],[2,3,4]])
[mean(x[:,n]) for n in range(shape(x)[1])]

# [1.5, 2.5, 3.5]
于 2013-06-26T20:15:57.523 回答