2017-02-23 53 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