[英]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.