2017-02-23 75 views
1

這是一個培訓示例,可能在現實世界中可能有應用程序,也可能沒有應用程序。我簡化了它,只是爲了說明問題。一旦構建完成,我很難找到正確的語法來索引子元素。希望有人能夠破解這個......只是爲了學習價值。Python複雜對象索引 - 訪問特定嵌套元素時遇到問題

import numpy as np 
import pandas as pd 

# some simple arrays: 
simp1=np.array([[1,2,3,4,5]]) 
simp2=np.array([[10,9,8,7,6]]) 
simp3=[11,12,13] 

trueSimp1=np.array([10,9,8,7,6]) 

crazyList = [simp1, simp2, simp3, trueSimp1] 

我們可以訪問的最後一個對象的第一個元素:

crazyList[3][0] 

我們可以查看與整個第一對象:

crazyList[0] 

可是如何才能讓只是一個子第一個對象內的元素?我嘗試了許多[0] [1],[0,1],[[0]],[[0] [1]]等失敗的想法......並且似乎無法找到正確的人得到它。爲了學習,我想將這個答案添加到我正在構建的筆記中。

回答

2

爲了學習,你應該知道這個列表是理想的結構,你永遠不會需要處理。

你的問題是crazyList中的第一個元素有一個空層次的嵌套(注意額外的方括號)。也就是說,ndarray包含另一個包含實際元素的ndarray

>>> crazyList[0] 
array([[1, 2, 3, 4, 5]]) 
>>> type(crazyList[0][0]) 
numpy.ndarray 

因此,要訪問單個元素,您需要索引附加圖層。

>>> crazyList[0][0][1] 
2 
+0

這就是我正在尋找的。我在想它是一個像嵌套列表的數組,但我不知何故錯過了這意味着它有一個額外的空層。代碼是從我認爲可能沒有注意到這個細節的講師那裏借來的,但我們只是人。 :-)在清理我的學習注意事項時,我可能會清理這個對象,所以它是一個嵌套的對象,每一層都有一些東西。仍然不現實,有可能更好的方式來組織數據,但重點是顯示覆雜的索引。謝謝! – TMWP

+0

@TMWP沒問題,很高興能幫到你! – miradulo