当我用NumPy对嵌套数组求和时,我没有得到我所期望的结果。
>>> import numpy as np
>>> vals = np.array([[[38., 27.], [20., 12.]], [[10., 27.], [10., 30.]], [[13., 16.], [5., 5.]]])
>>> vals.sum(axis=1)
array([[58., 39.],
[20., 57.],
[18., 21.]])
我本以为“axis=1”会一直执行下去,结果如下:
array([65., 32.],
[37., 40.],
[40,, 29.])
但可能我只是没有正确地思考轴!无论如何,我认为我想要的结果是连贯的,所以任何帮助你可以给予实现它将不胜感激。
4条答案
按热度按时间nuypyhwy1#
我会提出一个稍微复杂一点的解决方案,这可能会帮助您了解如何使用轴。这里我使用来自numpy的
transpose
方法转置您的原始数组,然后我获得您预期结果的转置,所以我再次使用transpose
。代码如下:如预期,输出为:
ubbxdtey2#
我认为您的意思是使用axis=2
而你期望的最后一行是个打字错误
记住轴从0开始,并从外到内工作
如果沿着axis = 2求和,则是对 * innerest * 组数据求和,这将产生所需结果。您可以这样想:
fcy6dtqo3#
axis参数指定要在哪个轴上执行求和运算。请尝试以下操作:
avwztpqn4#
“求和所沿着的一个或多个轴”可能会引起混淆,尤其是当两个或更多维度相同,或者数组是二维的时候。
对于1d来说,它只能有一个意义,对于所有维度都不同的3d来说,动作变得更加清晰,一个轴被“移除”,另外2个轴保留。
或将求和后的维度保留为:
用一组斧头