python – 如何实现“沿特定轴”操作?

我可以使用numpy.sum对特定轴上的所有元素求和,即

>>> a = numpy.array([[1,2], [3,4]])
>>> numpy.sum(a, 1)
array([3, 7])

这是沿行的总和,它逐个添加每列的元素.

如果只有2轴或3轴,我可以使用if … elif或swith … C/C++中的情况实现它,但如果有100个轴怎么办?怎么实现呢?

最佳答案 Numpy数组只是引擎盖下的一维C数组,因此沿着单个轴步进是通过跳跃C步数来实现的,步幅的大小取决于您要迭代的维度(最快的最小步幅)维度,在Python / C中将是最后一个维度).

因此,您必须计算与轴对应的步幅,然后在计算总和时逐步调整数组.对于每个总和,从数组中的偏移量开始(第一个将为0),这会随着另一个步长而增加.

如果你想了解更多,你可以阅读guide to numpy的第15章(不需要阅读以前的所有内容),它以一个关于numpy数组迭代的部分开始,就像在C中完成的那样.

点赞