2009-11-24 51 views
0

我有一個問題,因爲我用列表數組執行數學運算,例如我得到每個數組列表的總和,Valar獲得一個新的列表,用於數組中的每個列表的總和。在陣列中的操作

感謝任何迴應

+2

我沒有看到這個問題。請更新。 –

+0

這是無法理解的。 – SilentGhost

+0

如果你想要一個Valar的名字列表,參見'http:// en.wikipedia.org/wiki/Vala_%28Middle-earth%29' ...否則解釋你使用的行話。 –

回答

1

我的理解是,你有一個列表的列表 - 實際上,矩陣。你想要每行的總和。我同意其他回答者你應該使用numpy。

我們可以創建一個mulidimensional陣列:

>>> import numpy 
>>> a = numpy.array([[1,2,3], [4,5,6], [7,8,9]]) 
>>> a 
array([[1, 2, 3], 
     [4, 5, 6], 
     [7, 8, 9]]) 

現在我們可以使用a.sum([dimension])其中dimension是你怎麼想求和陣列。總結每一行是尺寸1:

>>> a.sum(1) 
array([ 6, 15, 24]) 

您也可以和每一列:

>>> a.sum(0) 
array([12, 15, 18]) 

,總結所有:

>>> a.sum() 
45 
3

嘗試列表理解:

>>> list_of_lists = [[1,2],[3,4]] 
>>> [sum(li) for li in list_of_lists] 
[3, 7] 
1

如果你要操縱號碼錶來執行一些數學calculos,你最好使用Numpy的數組:

>>> import numpy 
>>> a = numpy.array([1,2,3]) 
>>> b = numpy.array([2,6]) 
>>> a_list = [a,b] 
>>> [x.sum() for x in a_list] 
[6, 8] 

它會更快!

+0

你好,謝謝你的回答是添加數組基本元素的好方法,但是對於這種類型的數組可以工作 a = array([[1,2,3],[4,5,6],[ 7,8,9]]) 我想獲得數組的每個向量的總和,就像第一個向量或每個向量和的總和([1,2,3]) – ricardo

2

您也可以試試地圖 ping內建的總和函數的列表。

>>> a = [11, 13, 17, 19, 23] 
>>> b = [29, 31, 37, 41, 43] 
>>> c = [47, 53, 59, 61, 67] 
>>> d = [71, 73, 79, 83, 89] 
>>> map(sum, [a, b, c, d]) 
<map object at 0x02A0E0D0> 
>>> list(_) 
[83, 181, 287, 395] 
+0

說明:1)在此示例地圖返回一個地圖對象而不是列表,就像在以前的Python版本中一樣。 2)因此,需要列表(東西)將地圖對象轉換爲列表。 3)在Python的交互模式下,_變量包含解​​釋器顯示的最新輸出值。 –