猿问

未知的向量大小python

我有一个要在python中转换的matlab代码。我是python的新手,但我能够回答很多谷歌搜索问题。但是现在,我试图找出以下几点:当我在每列上应用不同的内容时,我有一个for循环,但是您不知道列数。例如。在matlab中,没有比这更容易的了:

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

但是我不知道例如在列数为1时如何在python上执行此操作,因为我无法在python中执行x [:,1]。任何的想法?


慕的地6264312
浏览 161回答 3
3回答

江户川乱折腾

尝试一下numpy。它是用C编写的高性能数学库的python绑定。我相信它具有矩阵切片运算的相同概念,并且比纯python编写的相同代码(在大多数情况下)要快得多。关于您的示例,我认为最接近的是使用numpy.mean。在纯python中,很难计算列的均值,但是您可以使用以下方法对矩阵进行转置:# there are no builtin avg functiondef avg(lst):    return sum(lst)/len(lst)rows = list(avg(row) for row in a)

www说

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

aluckdog

这是做到这一点的一种方法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]
随时随地看视频慕课网APP

相关分类

Python
我要回答