慕的地6264312
2021-04-02 18:14:39
我有一個要在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
提交
取消
