2017-10-19 37 views
0

我有一個列表,諸如:使用元素

a=[np.array([1,2,3]),np.array([4,5,6]),np.array([7,8,9])] 
現在

,我想_1的存取例如每個列表中的每個元素具有相同的索引並執行相應的操作。讓我們說,每個數組的索引相同的值。

我可以用每個列表索引每個列表索引。

a[0][2] 

導致3.但是下面不工作在含義

meanedValues=[None]*3 
for j in range(len(a[0])):       #given all arrays have the same length 
    meanedValues[j]=mean(a[:][j]) 

結果每個陣列中itselve而不是從每個列表相同索引的每個元素的。

meanedValues=[None]*3 
for j in range(len(a[0])):       #given all arrays have the same length 
    meanedValues[j]=mean(a[:](0,j)) 

回報:類型錯誤:「名單」對象不是可調用

+0

爲什麼這是一個列表,而不是一個2D數組? –

+0

好點。這是由於不同功能中的多處理。我簡化了這個到最低限度。我會看看我是否可以改變這一點。感謝提示。編輯:看到答案它看起來很簡單。 –

回答

1

你可以簡單地使用2D numpy的陣列,它本身支持您所需的操作:

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

print(a) 

>>> array([[1, 2, 3], 
      [4, 5, 6], 
      [7, 8, 9]]) 

# get 2nd values 
print(a[:, 1]) 

>>> array([2, 5, 8]) 


# get mean values 
print(np.mean(a, axis=0)) 

>>> array([ 4., 5., 6.]) 
1

鑑於所有陣列具有相同的長度,您可以將列表轉換爲二維數組,然後取平均值在軸0:

np.asarray(a).mean(0) 
# array([ 4., 5., 6.])