python - 查找多维 Python 数组的维度

标签 python arrays dimensions

在 Python 中,是否可以编写一个返回多维数组维度的函数(假设数组的维度没有锯齿状)?

例如,[[2,3], [4,2], [3,2]] 的维度将为 [3, 2],而 [[[3,2], [4,5]],[[3,4],[2,3]]] 的维度将是 [2,2, 2]

Python 是否有任何内置函数可以返回多维数组的所有维度,还是我需要自己实现这个函数?

最佳答案

不,没有任何内置的东西,因为这样的“数组”1 可能是参差不齐的,“尺寸”或“形状”的概念根本没有任何意义。所以,你必须自己写。如果您可以假设所有维度的一致性,您可以按以下方式进行:

dim1 = len(a)
dim2 = len(a[0])
dim3 = len(a[0][0])
.
.
.

很容易使这个递归处理所有维度。应该这样做:

def dim(a):
    if not type(a) == list:
        return []
    return [len(a)] + dim(a[0])

但如果您需要这样的东西,您可能需要考虑查看 NumPy具有 numpy.ndarray.shape 的数组这将为您提供所需的信息。

from numpy import array
l = [[2, 3], [4, 2], [3, 2]]
a = array(l)
print a.shape

输出

(3, 2)

1 在吓人的引号中,因为你不是真的在看数组,你在看一个列表,或者列表的列表,或者列表列表的列表....

关于python - 查找多维 Python 数组的维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17531796/

相关文章:

javascript - 稳定排序动态创建的包含重复项的数组(javascript)

c - 我的程序不接受使用 getchar 的 c 中的简单字符串

api - 是否可以在 Google Analytics 查询过滤器中比较 2 个维度?

css - html和css设计的问题

python - GAE Python 代码在生产中比本地慢得多

python - XGBoost节点 split 值不合理

python - 微调 keras .h5 模型到 c++ 中使用的 .pb 模型给出运行模型失败错误

javascript - 如何确定包含对象的两个数组之间的差异

python - 像在 MATLAB 中一样在 Python 中连接矩阵/向量?

python - 在保留所有维度的同时减去两个数组