我有一个matlab代码,我正在尝试在python中进行翻译。 我是python的新手,但我已经能够回答一些谷歌搜索的问题了。 但是现在,我想弄清楚以下内容: 当我在每列上应用不同的东西时,我有一个for循环,但你不知道列的数量。例如。 在matlab中,没有比这更容易的了:
for n = 1:size(x,2); y(n) = mean(x(:,n)); end
但我不知道如何在python上执行此操作,例如,列数为1,因为我无法在python中执行x [:,1]。 有什么想法吗?
感谢名单
答案 0 :(得分:2)
是的,如果您使用numpy,您可以使用x [:,1],并且您还可以获得其他数据结构(向量而不是列表),matlab和numpy之间的主要区别在于matlab使用矩阵进行计算和使用numpy向量,但你已经习惯了,我认为this guide会帮助你。
答案 1 :(得分: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)
答案 2 :(得分: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]