考虑一个对象,它是一个数组列表:a=[array([1,2,3]),array(2,5,10,20)]
以它自己的有趣方式,这件事有两个维度。列表本身是一维的,其中包含一维对象。有没有一种简单的方法可以区分上面的a
和像b=[1,3,6,9,11]
这样的列表,而该列表只是1D,而c=1
是0D标量?我想要一个函数dimens()
,使dimens(a)
返回2
,dimens(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/