考虑一个对象,它是一个数组列表:

a=[array([1,2,3]),array(2,5,10,20)]

以它自己的有趣方式,这件事有两个维度。列表本身是一维的,其中包含一维对象。有没有一种简单的方法可以区分上面的a和像b=[1,3,6,9,11]这样的列表,而该列表只是1D,而c=1是0D标量?我想要一个函数dimens(),使dimens(a)返回2dimens(b)返回1,并且dimens(c)返回0

我通过测试列表中第一个元素的形状来做到这一点,但我觉得可能有一种更简洁的方法。

最佳答案

def dimens(l):
    try:
        size = len(l)
    except TypeError: # not an iterable
        return 0
    else:
        if size: # non-empty iterable
            return 1 + max(map(dimens, l))
        else: # empty iterable
            return 1

print(dimens([[1,2,3],[2,5,10,[1,2]]]))
print(dimens(np.zeros([6,5,4,3,2,1])))


输出量

3
6

关于python - 如何确定列表和数组混合的维数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39255523/

10-12 18:45