Python 如何在列表中查找不同大小的numpy数组的单个元素的平方

Python 如何在列表中查找不同大小的numpy数组的单个元素的平方,python,numpy,Python,Numpy,假设我有以下np数组列表: >>> l = [] >>> l.append(np.array([[1,2,3],[4,5,6]])) >>> l.append(np.array([[7,8],[9,10]])) >>> l.append(np.array([[7,8],[9,10],[11,12]])) 我想找到这个列表中所有numpy数组的每个单独值的平方和。采取以下行动: >>> np.sum(np

假设我有以下np数组列表:

>>> l = []
>>> l.append(np.array([[1,2,3],[4,5,6]]))
>>> l.append(np.array([[7,8],[9,10]]))
>>> l.append(np.array([[7,8],[9,10],[11,12]])) 
我想找到这个列表中所有numpy数组的每个单独值的平方和。采取以下行动:

>>> np.sum(np.square(l)) 
给出以下错误:

ValueError: operands could not be broadcast together with shapes (2,3) (2,2)
我是如何以更具pythonic或numpythonic的方式来做这件事的?我是否必须手动迭代每个numpy数组以找到它们的平方,然后手动求和,如下面所示

>>> np.sum(list(map(lambda i: np.sum(np.square(i)),l)))
944
PS:

对于以下列表

>>> l                                     
[array([[1, 2, 3],
       [4, 5, 6]]), array([[ 7,  8],
       [ 9, 10]])]
我能够做到这一点:

>>> np.sum(np.square(np.hstack(l)))  
385
但是,
hstack()
在输入列表的维度上似乎有一些限制,因为它在第一个列表上给出了类似的错误

我是否必须手动迭代每个numpy数组以找到它们的平方,然后手动求和,如下面所示

>>> np.sum(list(map(lambda i: np.sum(np.square(i)),l)))
944
基本上,是的。您有一个形状/长度不兼容的numpy数组列表。这意味着您要跳出numpy阵列模型。但您的实现可能会更顺畅一些:

sum(np.sum(np.square(a)) for a in l)