我有一个要在python中转换的matlab代码。我是python的新手,但我能够回答很多谷歌搜索问题。但是现在,我试图找出以下几点:当我在每列上应用不同的内容时,我有一个for循环,但是您不知道列数。例如。在matlab中,没有比这更容易的了: for n = 1:size(x,2); y(n) = mean(x(:,n)); end但是我不知道例如在列数为1时如何在python上执行此操作,因为我无法在python中执行x [:,1]。任何的想法?
3 回答

江户川乱折腾
TA贡献1851条经验 获得超5个赞
尝试一下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)

www说
TA贡献1775条经验 获得超8个赞
是的,如果您使用numpy,则可以使用x [:,1],并且还可以获得其他数据结构(向量而不是列表),matlab和numpy之间的主要区别是matlab使用矩阵进行计算,而numpy使用向量,但是您已经习惯了,我认为本指南将为您提供帮助。

aluckdog
TA贡献1847条经验 获得超7个赞
这是做到这一点的一种方法
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]
添加回答
举报
0/150
提交
取消