未知向量大小python

2024-04-26 07:02:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个matlab代码,我正在尝试用python翻译。 我对python是个新手,但是我已经能够通过google回答很多问题。 但现在,我想弄清楚以下几点: 当我在每一列上应用不同的东西时,我有一个for循环,但是你不知道列的数量。例如。 在matlab中,没有比这更简单的了:

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

但是我不知道如何在python上实现它,例如,当列数为1时,因为我不能在python中实现x[:,1]。 你知道吗?你知道吗

桑克斯


Tags: 代码forsize数量googlemeanendmatlab
3条回答

这是一种方法

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]

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

关于你的例子,我认为最接近的应该是使用^{}的东西。你知道吗

在纯python中,很难计算列的平均值,但如果您能够转置矩阵,则可以使用以下方法:

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

rows = list(avg(row) for row in a)

是的,如果你使用numpy,你可以使用x[:,1],而且你还可以得到其他数据结构(向量而不是列表),matlab和numpy的主要区别是matlab使用矩阵进行计算,numpy使用向量,但是你习惯了,我想this guide会帮到你。你知道吗

相关问题 更多 >