Python 如何在列表中查找不同大小的numpy数组的单个元素的平方
假设我有以下np数组列表: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
>>> 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)