【发布时间】:2014-12-13 04:10:42
【问题描述】:
我们可以在python中使用嵌套列表创建多维数组,例如:
A = [[1,2,3],
[2,1,3]]
等等。 在这种情况下,它是简单的 nRows= len(A) 和 nCols=len(A[0])。但是,当我有超过三个维度时,它会变得复杂。
A = [[[1,1,[1,2,3,4]],2,[3,[2,[3,4]]]],
[2,1,3]]
等等。 这些列表在 Python 中是合法的。并且维度的数量不是先验的。 在这种情况下,如何确定维度的数量以及每个维度中的元素数量。
我正在寻找一种算法以及可能的实现。我相信它有一些类似于 DFS 的东西。有什么建议吗?
P.S.:我不是在寻找任何现有的软件包,尽管我想了解它们。
【问题讨论】:
-
您的第二个示例不一致是多维的。考虑将
numpy用于此类事情,您可以只要求对象的shape。 -
你想要的更多的是一棵树而不是一个数组(它甚至不是一个锯齿状数组)。要使其成为一个数组,您应该有一个值列表列表,而不是值列表或 other 列表。树的定义是一个结构,其中每个节点都有一个集合,其中每个项目都是叶子或另一个节点,因此是递归的。
-
我知道给出的例子是不一致的多维的。考虑一个案例,如果我们要检查给定的数据是一个正确的数组(如果你需要一个实际的例子)但是,正如我稍后提到的,目标是找到算法。我知道 numpy.py 但我正在寻找算法。
-
@heltonbiker:我同意你的看法。它更像是一棵树而不是一个数组。在这种情况下,我们可以构建一棵树,并可能将维度确定为每个节点中的值。但这会很慢。我正在寻找一种有效的算法......不使用像 numpy 或 SciPy 这样的包。
-
如果您将算法应用于您发布的这个示例,结果会是什么,为什么?
标签: python algorithm matrix multidimensional-array