2024-06-26 13:26:00 发布
网友
我有一个3d numpy阵列(nx5x5)。我想把n个切片相加。因此,新的形状将是(nx1x1),其中每个n只是单个5x5数组的总和。我可以在numpy中不使用循环执行此操作吗?np.sum有它的轴参数,但它们将数组重塑为错误的形状。我想我可能需要给np.sum打两次电话?但我在想怎么做时遇到了麻烦。有人知道答案吗
以下是三种不同的方法:
使用tuple表示axis:
tuple
axis
a.sum(axis=(1, 2))
正确重塑以合并要求和的轴:
a.reshape(a.shape[0], -1).sum(axis=1)
使用多个总和:
a.sum(-1).sum(-1)
或
a.sum(1).sum(-1)
等等
我想我已经明白了这一点,对于任何遇到同样问题的人来说。事实证明,您可以从np.sum中选择两个轴,生成一个平面而不是一条直线。因此:
np.sum(a, (1,2)
这就是诀窍
np.sum has its axis arguments, but they reshape the array into the wrong shape
求和是一种缩减操作,在特定轴上进行缩减(通过对该轴上的所有元素求和)后,该特定尺寸将被删除。如果不希望,可以传递可选的keepdims参数
keepdims
values = np.random.randn(3,5,5) values.sum(axis=(1,2), keepdims=True)
以下是三种不同的方法:
使用
tuple
表示axis
:正确重塑以合并要求和的轴:
使用多个总和:
或
等等
我想我已经明白了这一点,对于任何遇到同样问题的人来说。事实证明,您可以从np.sum中选择两个轴,生成一个平面而不是一条直线。因此:
这就是诀窍
求和是一种缩减操作,在特定轴上进行缩减(通过对该轴上的所有元素求和)后,该特定尺寸将被删除。如果不希望,可以传递可选的
keepdims
参数相关问题 更多 >
编程相关推荐