Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检查列表中包含的多个数组的形状?_Python_Arrays_Numpy - Fatal编程技术网

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

Python 如何检查列表中包含的多个数组的形状?,python,arrays,numpy,Python,Arrays,Numpy,我得到了一个包含多个数组的列表,我编写了以下代码试图查看这些数组的形状[0] for i in xrange(len(list)): k = list[i].shape[0] print k 输出是正确的,但我想检查这些形状[0],也就是说,如果它们相同,函数将继续,否则,如果它们不是相同的数字,函数将中断。如何做到这一点?请随时给我提建议,非常感谢 使现代化 我创建了一个名为“ab”的列表,其中包含3个不同的数组,并使用错误和异常代码检查形状[0]: ab = [np.arr

我得到了一个包含多个数组的列表,我编写了以下代码试图查看这些数组的形状[0]

for i in xrange(len(list)):
    k = list[i].shape[0]
    print k
输出是正确的,但我想检查这些形状[0],也就是说,如果它们相同,函数将继续,否则,如果它们不是相同的数字,函数将中断。如何做到这一点?请随时给我提建议,非常感谢

使现代化 我创建了一个名为“ab”的列表,其中包含3个不同的数组,并使用错误和异常代码检查形状[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
输出错误,我哪里出错了?

您可以使用集合理解创建一组独特的形状,然后检查集合的长度是否超过1:

all(x.shape[0]==list[0].shape[0] for x in list)
shapes = {arr.shape[0] for arr in my_list}
if len(shapes) > 1:
    # return None
或者,更好的方法是尝试在数组上应用numpy函数,如果它们的形状不同,则会引发ValueError:


所以,list[i]将是一个数组,对吗?如果是的话,您想对照什么检查它的形状[0]。因为xrangelenlist中的i不是pythonic。使用列表中的l代替!最好不要给列表命名,因为列表是一个有用的内置项的名称。当您在一个月后回来并添加需要内置代码的代码时,这是一个等待发生的bug。对于示例案例,您希望它在那里表现如何?您说输出错误,那么预期的o/p是多少?@Divakar,因为三个数组的形状[0]不相同。
try:
    np.hstack(my_list)
except ValueError:
    # rasise exception or return None