【发布时间】:2014-10-16 12:19:33
【问题描述】:
免责声明:初学者、自学 Python 用户。
ndarray 的一个非常酷的特性是它们能够接受整数元组作为索引(例如myNDArray[(1,2)] == myNDArray[1][2])。这允许我将未指定的索引保留为变量(例如 indicesTuple ),直到脚本确定要使用 ndarray 的哪个部分,在这种情况下,变量被指定为整数元组并用于访问 ndarray 的一部分(例如myNDArray[indicesTuple])。使用变量的效用是元组的长度可以根据 ndarray 的维度而变化。
但是,这限制了我使用数值数组。我尝试使用列表,但它们不能将元组作为索引(例如 myList[(1,2)] 给出错误。)。有没有办法像函数参数一样“解开”列表索引的元组?或者更简单或更高效的方法?
更新:天哪,我忘记了它的存在。基本上我最终了解到可以使用参数 dtype=object 初始化 ndarray,这允许 ndarray 包含多种类型的 Python 对象,就像一个列表。至于访问列表,正如评论者指出的那样,我可以使用 for 循环遍历变量 indicesTuple 来访问列表中越来越多的嵌套元素。对于就地编辑,请参阅接受的评论,那里确实做得更多。
【问题讨论】:
-
原生 Python 索引符号
myList[1][2]有什么问题?您为什么对通过元组进行索引感兴趣? -
我不能将它们作为变量保留在脚本中。我的代码更像 myList[myIndices]。编辑:编辑问题以反映这一点。
-
@BatWannaBe:你需要添加的只是一个循环。
-
你提前知道元组有多大吗?例如,如果它总是两个元素长,你不能
myList[tup[0]][tup[1]]吗? -
在使用您的 cmets 作为线索浏览 stackOverflow 之后,我发现我总是可以使用带有 dtype = object 的 ndarrays,有效地使 ndarrays 列表能够包含任何类型的对象。
标签: python list tuples indices