繁体   English   中英

如何检查列表中包含的多个数组的形状?

[英]How to check the shape of multiple arrays contained in a list?

我得到了一个包含多个数组的列表,并且我编写了以下代码来尝试查看这些数组的shape [0],

for i in xrange(len(list)):
    k = list[i].shape[0]
    print k

输出是正确的,但我想检查这些shape [0],即,如果它们相同,则函数将继续,否则,如果它们的数目不相同,则函数将中断。 这个怎么做? 随时给我建议,非常感谢。

更新资料

我创建了一个名为“ ab”的列表,其中包含3个不同的数组,并使用错误和异常代码检查shape [0]:

ab = [np.array([[1,2,3],[1,2,3]]), 
      np.array([[1,2,3]]), 
      np.array([[1,2,3],[1,2,3],[0,1,2],[0,9,9]])]

for i in xrange(len(ab)):
k = ab[i].shape[0]
print k

try:
    all(x.shape[0]==ab[0].shape[0] for x in ab)
    print 'True'
except ValueError:
    print 'False'

但是输出是:

2
1
4
True

输出错误,我在哪里出错?

all(x.shape[0]==list[0].shape[0] for x in list)

您可以使用set理解来创建一组唯一的形状,然后检查集合的长度是否大于1:

shapes = {arr.shape[0] for arr in my_list}
if len(shapes) > 1:
    # return None

或者,作为更好的方法,尝试在数组上应用numpy函数,如果它们的形状不同,则会引发ValueError

try:
    np.hstack(my_list)
except ValueError:
    # rasise exception or return None

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM